聚合numpy蒙面数组

时间:2015-02-09 10:10:04

标签: python numpy

我正在使用numpy masked arrays并且有一个简单的操作,我无法弄清楚如何以简单的方式做到这一点。如果我有两个蒙版数组,我怎样才能将它们聚合到另一个只包含未屏蔽值的数组中?

In [1]: import numpy as np

In [2]: np.ma.array([1, 2, 3], mask = [0,1,1])
Out[2]:
masked_array(data = [1 -- --],
             mask = [False  True  True],
       fill_value = 999999)

In [3]: np.ma.array([4, 5, 6], mask = [1,1,0])
Out[3]:
masked_array(data = [-- -- 6],
             mask = [ True  True False],
       fill_value = 999999)

如果我想获得以下数组,我应该应用哪个操作:

masked_array(data = [1 -- 6],
             mask = [False  True False],
       fill_value = 999999)

1 个答案:

答案 0 :(得分:1)

使用numpy.dstack堆叠蒙版和数组并创建一个新的蒙版数组,然后使用numpy.prod获得所需的输出:

>>> a1 = np.ma.array([1, 2, 3], mask = [0,1,1])
>>> a2 = np.ma.array([7, 8, 9], mask = [1,1,0])
>>> arr = np.ma.array(np.dstack((a1, a2)), mask=np.dstack((a1.mask, a2.mask)))
>>> np.prod(arr[0], axis=1)
masked_array(data = [1 -- 9],
             mask = [False  True False],
       fill_value = 999999)