numpy中的屏蔽数组操作
Masked array operation in numpy
这是我的拳头post,堆栈溢出,所以请多多包涵。
我当然尝试在网上寻找答案,但没有成功。
问题:
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)
但我希望 mean 函数能够 return 屏蔽输出,如;
In [7]: (a[0]+a[1])/2
Out[7]:
masked_array(data =
[[-- 2]
[3 --]],
mask =
[[ True False]
[False True]],
fill_value = 999999)
我哪里做错了?
屏蔽数组忽略屏蔽值,它们不传播屏蔽。要得到你想要的结果,你可以这样做:
>>> 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)
这是我的拳头post,堆栈溢出,所以请多多包涵。 我当然尝试在网上寻找答案,但没有成功。
问题:
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)
但我希望 mean 函数能够 return 屏蔽输出,如;
In [7]: (a[0]+a[1])/2
Out[7]:
masked_array(data =
[[-- 2]
[3 --]],
mask =
[[ True False]
[False True]],
fill_value = 999999)
我哪里做错了?
屏蔽数组忽略屏蔽值,它们不传播屏蔽。要得到你想要的结果,你可以这样做:
>>> 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)