2016-07-27 48 views
3

我想分配给(一片)掩盖的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

我想你想可以做什么:

a.data[a < 2] = -1 
1

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

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