【发布时间】:2020-09-15 19:02:46
【问题描述】:
我有一些数组
a = np.array([1, 2, 3])
还有一些面具
mask = np.ones(a.shape, dtype=bool)
并且可以做到
np.testing.assert_almost_equal(a[mask], a) # True
然而,
np.ma.array(a, mask)
等价于
a[np.logical_not(mask)]
和
np.ma.array(a, np.logical_not(mask))
等价于
a[mask]
这对我来说似乎违反直觉。
希望 numpy 解释一下这种设计选择。
【问题讨论】:
-
你的掩码是一个整数数组,而不是布尔值
-
@yatu 谢谢,已修复。随意编辑不准确之处:)我希望问题本身很清楚。
-
有趣的问题,但我觉得这就是掩码数组的定义。 "Masked values of True exclude the corresponding element from any computation."。也许this answer 解决了它?
-
您是在问为什么代码会以它的方式工作(考虑到它是如何记录的),还是为什么开发人员选择了这个特定的约定(与您的直觉认为的相反)?
-
@hpauli 我实际上不明白你所说的不同。我问为什么 np.ma 使用与 np 不同的约定。我的直觉是它们应该是一样的,我不介意哪种方式。
标签: python numpy masked-array