【发布时间】:2020-12-08 11:19:36
【问题描述】:
我有两个相同形状的 numpy 浮点数组:data 和 mask。我想根据data 中的值填充mask 的值。当data 中某个元素的值等于“可接受值”之一(见下文)时,mask 中的对应项应设置为 1.0,否则应设置为 0.0。
有两种可能的情况:
- 可接受的值都是有限数
- 可接受的值是除 0.0 之外的所有有限数
如何在没有任何额外数组分配的情况下实现上述目标?对于第一种情况,我可以使用 numpy.isfinite 和 out 参数。但是第二种情况呢? numpy.where 不能使用,因为它需要创建一个中间索引数组。我能想到的唯一解决方案是将 numpy 数组传递给 C 并在那里执行。但是,我想知道是否也有纯 numpy 解决方案。
谢谢。
【问题讨论】:
-
你需要的不是布尔掩码吗?
-
理想情况下,
mask数组也应该是一个浮点数组(刚刚在我的帖子中澄清过)。不过,对于不同类型的mask数组,我预计解决方案不会有很大差异。 -
创建数组真的是算法的瓶颈吗?
-
为什么?您是遇到内存错误,还是只是希望节省时间?