我想分配给(一片)一个蒙面的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。
答案 0 :(得分:2)
我认为你想要的是:
a.data[a < 2] = -1
答案 1 :(得分:1)
在研究这个问题时,我找到了答案:
np.copyto(a, -1, where=a < 2)