2016-07-27 51 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)