Numpy:堆叠掩码数组并计算最小值/最大值

2 投票
1 回答
1179 浏览
提问于 2025-04-18 14:44

我正在使用带有掩码的数组,想要计算不同数组或列的最大值。如果整个数组都被掩码了,我就遇到问题。

举个例子:

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

撰写回答