有没有一种方便的方法可以将另一个具有实际值的数组添加到另一个数组中的屏蔽位置?
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, --]。我想一定有一个简单的解决方案吗?
最佳答案
试试这个(从 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)))
关于python - 将两个 numpy 掩码数组加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539069/