3

我在 numpy.ma 中有一个屏蔽数组,所有值都被屏蔽:

import numpy.ma as ma
arr = ma.array([3,4,10], mask=[True, True, True])

我希望对该数组的操作,例如ma.sum应该返回masked

>>> ma.sum(arr) is ma.masked
>>> True

这确实是True

但是当我ma.argmax()在同一个数组上使用时,结果不是ma.masked而是0

>>> ma.argmax(arr) is ma.masked
>>> False
>>> ma.argmax(arr)
>>> 0

有任何想法吗?这是一个错误,还是预期的行为?理想情况下,这将返回masked。谁能想到一个好的解决方法,还是我很傻......谢谢!

4

2 回答 2

3
>>> arr[ma.argmax(arr)]
masked

argmax返回最大值的索引。您可以使用索引来获取值。该被屏蔽。

因为所有值都被屏蔽了,所以它们被认为是相等的(与fill_value),并argmax返回记录的第一个索引(在的文档中numpy.argmax)。

于 2013-04-25T07:33:04.850 回答
2

np.argmax返回一个标量,因此返回一个掩码数组是没有意义的。

文档(强调我的):

返回沿给定轴的最大值的索引数组。 屏蔽值被视为具有值 fill_value

于 2013-04-25T07:46:22.903 回答