分配给蒙版numpy数组而不删除蒙版?

时间:2016-07-27 22:10:25

标签: python numpy

我想分配给(一片)一个蒙面的numpy数组但不修改掩码。 (作业通常会清除面具(除非它是"硬"),这似乎完全违背了掩蔽点,但那是我们必须合作的。)我会也喜欢这个例程来处理普通的无掩码数组。

有没有比保存和恢复面具更好的方法呢?

a = np.ma.array([0, 1, 2], mask=[0, 1, 0])
mask = a.mask.copy() if np.ma.is_masked(a) else None        # Have to copy because it might be shared
a[a < 2] = -1
if mask is not None:
    a.mask = mask
print(a, a.data)
# [-1 -- 2] [-1 -1 2]

这是Python 2,numpy 1.11.1。

2 个答案:

答案 0 :(得分:2)

我认为你想要的是:

a.data[a < 2] = -1

答案 1 :(得分:1)

在研究这个问题时,我找到了答案:

np.copyto(a, -1, where=a < 2)