是否有一种方便的方法可以将具有实际值的另一个数组添加到另一个数组的屏蔽位置中?
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)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句