API · NumPy
Python numpy.argmax()
Die Funktion numpy.argmax() gibt die Indizes der Werte mit den höchsten Werten im gegebenen NumPy-Array zurück.
Auf dieser Seite
Python NumPy numpy.argmax() gibt den Index eines Maximalwerts in einem Array zurück, nicht den Wert selbst. Mit diesem Index können Sie den Wert abrufen oder über axis für jeden Ausschnitt einen Index ermitteln. Kommt der Maximalwert mehrfach vor, wird das erste Vorkommen zurückgegeben.
So wählt numpy.argmax() den Index eines Maximums aus
Mit dem Standardwert axis=None durchsucht numpy.argmax() das Array so, als lägen alle Elemente in einer einzigen abgeflachten Folge. Bei mehrdimensionalen Eingaben bezeichnet der zurückgegebene Index daher eine Position in dieser Folge. Wird stattdessen eine Achse angegeben, erfolgt die Suche entlang dieser Dimension; zurückgegeben werden Indizes für die verbleibenden Ausschnitte.
Syntax und Parameter
Die Funktionssignatur lautet numpy.argmax(a, axis=None, out=None). Das Argument a ist das Eingabearray oder ein arrayähnliches Objekt. Mit axis wird die Dimension festgelegt, entlang der gesucht wird. Wird der Parameter weggelassen oder auf None gesetzt, wird die Eingabe zunächst abgeflacht. Bei einem zweidimensionalen Array durchsucht axis=0 jede Spalte von oben nach unten und gibt Zeilenindizes zurück; axis=1 durchsucht jede Zeile von links nach rechts und gibt Spaltenindizes zurück. Die ausgewählte Achse entfällt in der Form des Ergebnisses.
Das optionale Argument out ist ein Array, in das das Ergebnis geschrieben wird. Seine Form muss der Form des Ergebnisses entsprechen, und sein Datentyp muss die zurückgegebenen Indizes aufnehmen können. Die Funktion gibt den Index oder ein Array von Indizes zurück. Verwenden Sie diese Positionen, um auf die zugehörigen Maximalwerte zuzugreifen.
Den Index eines Maximums in ein- und mehrdimensionalen Arrays finden
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
a = np.array([2, 6, 1, 5])
index = np.argmax(a)
print(index)
print(a[index])
1
6
Der Maximalwert ist hier 6; seine Position ist 1, da NumPy bei null zu zählen beginnt. Bei einem mehrdimensionalen Array gibt das Standardverhalten weiterhin eine einzelne Position im abgeflachten Array zurück, kein Zeilen- und Spaltenpaar. Wenn Sie Koordinaten in der ursprünglichen Form benötigen, wandeln Sie diese Position mit numpy.unravel_index in Koordinaten um.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
index = np.argmax(a)
print(index)
print(np.unravel_index(index, a.shape))
3
(np.int64(1), np.int64(0))
Die abgeflachte Position 3 entspricht Zeile 1 und Spalte 0, wo der Wert 7 steht.
Eine Achse auswählen, um Indizes für jeden Ausschnitt zu finden
Bei einem 2-D-Array mit der Form (2, 3) reduziert axis=0 die Zeilendimension: Die Ausgabe enthält für jede Spalte einen Zeilenindex. axis=1 reduziert die Spaltendimension: Die Ausgabe enthält für jede Zeile einen Spaltenindex. Dies sind Positionen innerhalb des jeweils durchsuchten Ausschnitts, keine Positionen im abgeflachten ursprünglichen Array.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
print(np.argmax(a, axis=0))
print(np.argmax(a, axis=1))
[1 1 0]
[2 0]
Zum Beispiel ist der größte Wert in der ersten Spalte 7 und befindet sich an Zeilenindex 1; der größte Wert in der ersten Zeile ist 6 und befindet sich an Spaltenindex 2.
Gleiche Maximalwerte behandeln und den zurückgegebenen Index verwenden
Kommt der Maximalwert mehrfach vor, gibt numpy.argmax() die erste passende Position in der durchsuchten Reihenfolge zurück. Bei einer angegebenen Achse gilt diese Regel unabhängig für jeden Ausschnitt. Das folgende eindimensionale Beispiel zeigt die zurückgegebene Position und den dort gefundenen Wert.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
a = np.array([2, 6, 1, 6])
index = np.argmax(a)
print(index)
print(a[index])
1
6
Beide Maximalwerte sind 6, aber Index 1 kommt vor Index 3. Bei einer mehrdimensionalen Suche ohne Achse bezieht sich „erste“ auf die Reihenfolge im abgeflachten Array; mit einer Achse gilt die Reihenfolge innerhalb des jeweiligen Ausschnitts.
Das Ergebnis in out schreiben
Verwenden Sie out, wenn das Ergebnis in ein vorhandenes Array geschrieben werden soll. Seine Form muss zum Ergebnis passen: Für ein skalares Ergebnis eignet sich ein Array mit Skalarform; bei einer Suche entlang einer Achse ist ein Array in der Form der Ausgabe erforderlich. Wählen Sie einen ganzzahligen Datentyp, der die Indizes darstellen kann. Der Funktionsaufruf gibt außerdem dasselbe Ergebnis zurück, das er in out schreibt.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
result = np.empty((), dtype=np.intp)
np.argmax(a, out=result)
print(result)
3
Bei dieser Suche mit Standardeinstellungen hat das Ergebnis Skalarform; result ist deshalb ein null-dimensionales Array. Wenn Sie eine Achse angeben, legen Sie out mit der Form des resultierenden Indexarrays an.