J'essaie de trouver une fonction qui renvoie toutes les occurrences du maximum dans une liste donnée.
numpy.argmax
ne renvoie cependant que la première occurrence qu'il trouve. Par exemple:
from numpy import argmax
list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
winner = argmax(list)
print winner
donne uniquement l'index 0
. Mais je veux qu'il donne tous les indices: 0, 3, 5
.
Comme documentation de np.argmax
dit: "En cas d'occurrences multiples des valeurs maximales, les indices correspondant à la première occurrence sont renvoyés.", vous aurez donc besoin d'une autre stratégie.
Une option que vous avez utilise np.argwhere
en combinaison avec 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]