如何在numpy.ndarray中找到最后一次出现的最大值

Sud*_*n S 14 numpy scipy

我有一个numpy.ndarray,其中最大值将多次出现.

编辑:这与numpy.argmax略有不同:如果多次出现最大值,如何获取对应于*last*出现的索引,因为作者说

或者,更好的是,是否可以获得数组中所有最大值出现的索引列表?

而在我的情况下,获得这样的清单可能会非常昂贵

是否可以通过使用类似的东西找到最后一次出现的最大值的索引numpy.argmax?我想查找最后一次出现的索引,而不是所有出现的数组(因为可能有几百个)

例如,这将返回第一次出现的索引,即2

import numpy as np
a=np.array([0,0,4,4,4,4,2,2,2,2])
print np.argmax(a)
Run Code Online (Sandbox Code Playgroud)

但是我希望它输出5.

out*_*tis 28

numpy.argmax仅返回第一次出现的索引.您可以应用于argmax数组的反转视图:

import numpy as np
a = np.array([0,0,4,4,4,4,2,2,2,2])
b = a[::-1]
i = len(b) - np.argmax(b) - 1
i     # 5
a[i:] # array([4, 2, 2, 2, 2])
Run Code Online (Sandbox Code Playgroud)

注意numpy不会复制数组,而是使用以相反顺序访问它的步幅创建原始视图.

id(a) == id(b.base) # True
Run Code Online (Sandbox Code Playgroud)

  • 令人怀疑还有另一个功能,因为反向视图非常有效. (3认同)