2014-02-06 58 views
1

我有两个蒙面numpy阵列。这些是图像。操作在蒙面的Numpy阵列

我想从另一个中减去一个。

如果我做标准减法运算,

ma1 - ma2 

它将减去他们,如果他们没有被屏蔽(他们的面具不考虑)。我希望他们减去他们的面具。

有谁知道如何从彼此减去蒙面numpy阵列?

+3

你最好秀一些示例输入和输出;) – zhangxaochen

+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 

正如你看到的,结果是一样的...

+0

你确定这可以吗?我正在尝试它,得到相同的问题 –

+0

这两个面具都在同一区域的方式 –

+0

@Highschooler你有任何输入你的数组样本?也许你可以编辑你的问题添加这些信息... –