我正在尝试找到一个函数,该函数返回给定列表中所有出现的最大值。
然而 numpy.argmax
只返回它找到的第一次出现。例如:
from numpy import argmax
list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
winner = argmax(list)
print winner
只给出索引
0
。但我希望它给出所有索引: 0, 3, 5
。 最佳答案
正如 np.argmax
的文档所说:“如果多次出现最大值,则返回与第一次出现相对应的索引。”,因此您将需要另一种策略。
您拥有的一种选择是将 np.argwhere
与 np.amax
结合使用:
>>> import numpy as np
>>> listy = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
>>> winner = np.argwhere(listy == np.amax(listy))
>>> print(winner)
[[0]
[3]
[5]]
>>> print(winner.flatten().tolist()) # if you want it as a list
[0, 3, 5]
关于python - 如何让 numpy.argmax 返回所有出现的最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17568612/