这是我在堆栈溢出上的第一个帖子,所以请耐心等待。 当然,我试图在网上找到答案,但没有成功。
问题:
In [1]: import numpy
In [2]: import numpy.ma as ma
In [4]: a = ma.array([[[1,2],[3,4]],[[1,2],[3,4]]], mask=[[[True,False],[False,False]],[[False,False],[False,True]]])
In [5]: a
Out[5]:
masked_array(data =
[[[-- 2]
[3 4]]
[[1 2]
[3 --]]],
mask =
[[[ True False]
[False False]]
[[False False]
[False True]]],
fill_value = 999999)
In [6]: ma.mean(a, axis=0)
Out[6]:
masked_array(data =
[[1.0 2.0]
[3.0 4.0]],
mask =
[[False False]
[False False]],
fill_value = 1e+20)
但我希望平均函数返回屏蔽输出,如;
In [7]: (a[0]+a[1])/2
Out[7]:
masked_array(data =
[[-- 2]
[3 --]],
mask =
[[ True False]
[False True]],
fill_value = 999999)
我在哪里做错了什么?
答案 0 :(得分:2)
屏蔽数组忽略屏蔽值,它们不传播屏蔽。要获得所需的结果,您可以这样做:
>>> np.ma.array(a.data.mean(axis=0), mask=a.mask.any(axis=0))
masked_array(data =
[[-- 2.0]
[3.0 --]],
mask =
[[ True False]
[False True]],
fill_value = 1e+20)