Numpy蒙面数组argmax没有在完全屏蔽的数组上返回'masked'?

时间:2013-04-25 05:54:41

标签: python numpy

我在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。任何人都可以想到一个好的解决方法,或者我是愚蠢的......谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

由于所有值都被屏蔽,因此它们被视为相等(fill_value),argmax返回第一个索引(如the docs of numpy.argmax所示)。

答案 1 :(得分:2)

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

来自documentation(强调我的):

  

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