将两个numpy蒙版数组加在一起

时间:2013-12-12 09:02:53

标签: python numpy

有没有一种方便的方法可以将另一个带有实际值的数组添加到另一个数组中的掩码位置?

import numpy as np
arr1 = np.ma.array([0,1,0], mask=[True, False, True])
arr2 = np.ma.array([2,3,0], mask=[False, False, True])
arr1+arr2

Out[4]:
masked_array(data = [-- 4 --],
         mask = [ True False  True],
   fill_value = 999999)

注意:在arr2中,值2未被屏蔽 - >应该在结果数组中 结果应该是[2,4, - ]。我认为必须有一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:5)

尝试此操作(从http://docs.python.org/3/library/operator.html选择要用于蒙版的逻辑运算符)

>>> from operator import and_
>>> np.ma.array(arr1.data+arr2.data,mask=map(and_,arr1.mask,arr2.mask))
masked_array(data = [2 4 --],
             mask = [False False  True],
       fill_value = 999999)

在Python 3中,map()返回迭代器而不是列表,因此需要添加list()

>>> np.ma.array(arr1.data+arr2.data,mask=list(map(and_,arr1.mask,arr2.mask)))