Numpy:堆叠掩码数组并计算最小值/最大值
我正在使用带有掩码的数组,想要计算不同数组或列的最大值。如果整个数组都被掩码了,我就遇到问题。
举个例子:
import numpy as np
x = np.ma.array(np.array([1,2,3,4,100]),mask=[True,True,True, True, True])
y = 5
print(np.max(np.hstack((x, y))))
print np.max((np.max(y), np.max(x)))
print(np.max((np.hstack((np.max(x), 5)))))
结果:
100
nan
--
我觉得这个结果很奇怪,因为结果应该是5。为什么hstack()会忽略带掩码数组的掩码呢?
1 个回答
3
在使用掩码数组的时候,你需要用到专门的掩码函数,也就是说,方法名前面要加上numpy.ma.
:
>>> np.ma.hstack((x, y))
masked_array(data = [-- -- -- -- -- 5],
mask = [ True True True True True False],
fill_value = 999999)
>>> np.ma.max(np.ma.hstack((x, y)))
5