2013-04-25 24 views
1

我在numpy.ma一个屏蔽数组,对所有的值被屏蔽:Numpy masked array argmax不会在完全屏蔽的数组上返回'masked'?

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

回答

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

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

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

1

np.argmax返回一个标量,所以它没有意义返回一个被屏蔽的数组。

documentation(重点煤矿):

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