2013-04-25 52 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