Erhalten eines Histogramms der Form 100x100x100 Anbetracht würde Ich mag die 2 höchsten Werte a und b finden, und ihre Indizes (a1, a2, a3) und (b1, b2, b3), wie zum Beispiel:die Indizes der N höchsten Werte in einem ndarray
hist[a1][a2][a3] = a
hist[b1][b2][b3] = b
können wir leicht den höchsten Wert mit hist.max(), aber wie können wir die X höchsten Werte in einem ndarray bekommen?
Ich verstehe, dass man in der Regel np.argmax verwendet die Wertindizes abrufen, aber in diesem Fall:
hist.argmax().shape =() # single value
for i in range(3):
hist.argmax(i).shape = (100, 100)
Wie kann ich eine Form (3), ein Tupel mit einem Wert pro Dimension bekommen?
Danke, ich konnte nicht herausfinden, wie man richtig nutzen argpartition und unravel_index, jetzt macht durchaus Sinn: Indizes der
N
größten Sets Sie dienlargest
Funktion aus demheapq
Modul nutzen könnten. Akzeptiert Ihre Antwort, aber wenn @ atomh33ls seine Antwort aktualisiert, werde ich die 2 Lösungen Benchmarks :) – Fandekasp[Benchmark-Test] (https://gist.github.com/Fandekasp/20d428684a65b32d7c02): Argpartition ist schnell :) – Fandekasp