Masked Numpy Arrays中的操作

时间:2014-02-06 16:47:17

标签: python arrays numpy scipy

我有两个蒙面的numpy数组。这些是图像。

我试图从另一个中减去一个。

如果我使用标准减法运算符,

ma1 - ma2 

它会将它们减去,就好像它们没有被遮盖一样(不考虑它们的面具)。我希望他们用他们的面具减去。

有谁知道如何从彼此中减去蒙面的numpy数组?

1 个答案:

答案 0 :(得分:4)

它应该工作。在掩码数组中进行操作时,将采用操作中涉及的掩码的并集。下面的例子显示了numpy如何在两个蒙版数组之间进行减法时选择要更改的值:

a1 = np.random.random((100,100))
a2 = np.random.nandom((100,100))

a1 = np.ma.array(a1, mask=a1<0.5)
a2 = np.ma.array(a2, mask=a2<0.5)

umask = np.logical_or(a1.mask, a2.mask) # <-- union of the masks

test = a1.data - a2.data
test[umask] = a1.data[umask] # <-- "canceling" the operation according to the
                             #     combined mask

np.allclose((a1-a2), test)
#True

如您所见,结果是一样的......