我試圖找到一個函數,返回全部在給定列表中出現的最大值。如何使numpy.argmax返回所有最大值?
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
。
我試圖找到一個函數,返回全部在給定列表中出現的最大值。如何使numpy.argmax返回所有最大值?
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
>>> list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
>>> winner = np.argwhere(list == np.amax(list))
>>> print winner
[[0]
[3]
[5]]
>>> print winner.flatten().tolist() # if you want it as a list
[0, 3, 5]
很容易被'amax'中的'a'弄糊塗了:它代表'array',而不是'arg'。使用'max'(amax'的別名)比'amax'本身更好。 – dbliss