How to make numpy.argmax return all occurrences of the maximum?
max, numpy, python
Solution
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]
Problem
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`.