Frage Wie macht numpy.argmax alle Vorkommen des Maximums zurück?


Ich versuche eine Funktion zu finden, die zurückkehrt alle Vorkommen des Maximums in einer gegebenen Liste.

numpy.argmax Gibt jedoch nur das erste gefundene Ereignis zurück. Zum Beispiel:

from numpy import argmax

list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
winner = argmax(list)

print winner

gibt nur Index 0. Aber ich möchte, dass es alle Indizes gibt: 0, 3, 5.


34
2017-07-10 10:44


Ursprung


Antworten:


Als Dokumentation von np.argmax sagt: "Bei mehreren Vorkommen der Maximalwerte werden die dem ersten Vorkommen entsprechenden Indizes zurückgegeben."Sie brauchen also eine andere Strategie.

Eine Option, die Sie haben, verwendet np.argwhere in Kombination mit 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]

49
2017-07-10 10:53



Viel einfacher ...

Liste [Liste == np.max (Liste)]


-2
2017-10-30 21:00