I'm trying to find a function that returns all occurrences of the maximum in a given list.
numpy.argmax
however only returns the first occurrence that it finds. For instance:
from numpy import argmax
list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
winner = argmax(list)
print winner
gives only index 0
. But I want it to give all indices: 0, 3, 5
.
As documentation of np.argmax
says: "In case of multiple occurrences of the maximum values, the indices corresponding to the first occurrence are returned.", so you will need another strategy.
One option you have is using np.argwhere
in combination with 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]
Much simpler...
list[list == np.max(list)]