Python 将两个numpy遮罩阵列相加

Python 将两个numpy遮罩阵列相加,python,numpy,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]

是否有一种方便的方法将另一个具有实际值的数组添加到另一个数组中的屏蔽位置

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,-]。我想一定有一个简单的解决方案吗?

试试这个,从中选择要用于掩码的逻辑运算符

在Python 3中,map返回的是迭代器而不是列表,因此有必要添加列表:


尝试从中选择要用于掩码的逻辑运算符

在Python 3中,map返回的是迭代器而不是列表,因此有必要添加列表:


我觉得你的问题令人困惑。您将数据输入为[-4-],并期望[2,4,-]作为输出?其背后的逻辑是什么?arr2中的值2未被屏蔽,因此应包含在结果中。为什么arr1中的面具会赢?面具也被添加了,boolFalse+True是真的。我发现你的问题令人困惑。您将数据输入为[-4-],并期望[2,4,-]作为输出?其背后的逻辑是什么?arr2中的值2未被屏蔽,因此应包含在结果中。为什么arr1中的面具会赢?面具也会被添加,boolFalse+True是真的
>>> 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)
>>> np.ma.array(arr1.data+arr2.data,mask=list(map(and_,arr1.mask,arr2.mask)))