In diesem Lernprogramm lernen Sie, wie Sie die NumPy argmax()-Funktion um den Index des maximalen Elements in Arrays zu finden.
NumPy ist eine leistungsfähige Bibliothek für wissenschaftliche Berechnungen in Python; sie bietet N-dimensionale Arrays, die leistungsfähiger sind als Python-Listen. Eine der häufigsten Operationen, die Sie bei der Arbeit mit NumPy-Arrays durchführen werden, ist die Suche nach dem Maximalwert im Array. Manchmal möchte man aber auch den Index bei dem der Höchstwert auftritt.
Die argmax()
Funktion hilft Ihnen, den Index des Maximums in ein- und mehrdimensionalen Arrays zu finden. Fahren wir fort, um zu erfahren, wie sie funktioniert.
Wie man den Index des maximalen Elements in einem NumPy-Array findet
Um diesem Tutorial folgen zu können, benötigen Sie Python und NumPy installiert. Sie können mitprogrammieren, indem Sie eine Python-REPL starten oder ein Jupyter-Notebook aufrufen.
Zunächst importieren wir NumPy unter dem üblichen Alias np
.
import numpy as np
Sie können die NumPy max()
Funktion, um den Höchstwert in einem Array zu ermitteln (optional entlang einer bestimmten Achse).
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))
# Output
10
In diesem Fall, np.max(array_1)
ergibt 10, was korrekt ist.
Angenommen, Sie möchten den Index finden, bei dem der maximale Wert in der Matrix auftritt. Sie können den folgenden zweistufigen Ansatz wählen:
- Finden Sie das maximale Element.
- Ermitteln Sie den Index des größten Elements.
Unter array_1
Der Maximalwert von 10 steht bei Index 4, nach einer Null-Indexierung. Das erste Element steht bei Index 0, das zweite Element bei Index 1 und so weiter.

Um den Index zu finden, bei dem das Maximum auftritt, können Sie die Funktion NumPy wo() Funktion. np.where(condition)
gibt ein Array mit allen Indizes zurück, bei denen die condition
ist True
.
Sie müssen das Array anzapfen und auf das Element mit dem ersten Index zugreifen. Um herauszufinden, wo der Maximalwert auftritt, setzen wir den condition
zu array_1==10
; erinnern Sie sich, dass 10 der Höchstwert in array_1
.
print(int(np.where(array_1==10)[0]))
# Output
4
Wir haben verwendet np.where()
mit nur die Bedingung, aber dies ist nicht die empfohlene Methode zur Verwendung dieser Funktion.
📑 Hinweis: NumPy-Funktion where():
np.where(condition,x,y)
zurück:- Elemente aus
x
wenn die Bedingung lautetTrue
und
- Elemente ausy
wenn die Bedingung lautetFalse
.
Daher ist die Verkettung der np.max()
und np.where()
Funktionen können wir das maximale Element finden, gefolgt von dem Index, an dem es auftritt.
Anstelle des obigen zweistufigen Verfahrens können Sie die NumPy-Funktion argmax() verwenden, um den Index des maximalen Elements im Array zu erhalten.
Syntax der NumPy-Funktion argmax()
Die allgemeine Syntax zur Verwendung der NumPy argmax()-Funktion lautet wie folgt:
np.argmax(array,axis,out)
# we've imported numpy under the alias np
In der obigen Syntax:
- Array ist ein beliebiges gültiges NumPy-Array.
- axis ist ein optionaler Parameter. Wenn Sie mit mehrdimensionalen Arrays arbeiten, können Sie den Achsenparameter verwenden, um den Index des Maximums entlang einer bestimmten Achse zu finden.
- out ist ein weiterer optionaler Parameter. Sie können den
out
Parameter auf ein NumPy-Array, um die Ausgabe derargmax()
Funktion.
Hinweis: Ab NumPy Version 1.22.0 gibt es eine zusätzliche
keepdims
Parameter. Wenn wir den Parameteraxis
Parameter in derargmax()
Funktionsaufruf wird das Array entlang dieser Achse reduziert. Aber das Setzen derkeepdims
Parameter zuTrue
stellt sicher, dass die zurückgegebene Ausgabe die gleiche Form hat wie das Eingabefeld.
Verwendung von NumPy argmax() zur Ermittlung des Index des maximalen Elements
#1. Lassen Sie uns die NumPy-Funktion argmax() verwenden, um den Index des maximalen Elements in array_1
.
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.argmax(array_1))
# Output
4
Die argmax()
Funktion gibt 4 zurück, was korrekt ist! ✅
#2. Wenn wir umdefinieren array_1
so, dass 10 zweimal vorkommt, die argmax()
Funktion gibt zurück nur der Index des ersten Vorkommens.
array_1 = np.array([1,5,7,2,10,10,8,4])
print(np.argmax(array_1))
# Output
4
Für den Rest der Beispiele werden wir die Elemente von array_1
die wir in Beispiel #1 definiert haben.
NumPy argmax() verwenden, um den Index des maximalen Elements in einem 2D-Array zu finden
Lasst uns das NumPy-Array neu formen array_1
in ein zweidimensionales Array mit zwei Zeilen und vier Spalten.
array_2 = array_1.reshape(2,4)
print(array_2)
# Output
[[ 1 5 7 2]
[10 9 8 4]]
Bei einem zweidimensionalen Array steht die Achse 0 für die Zeilen und die Achse 1 für die Spalten. NumPy-Arrays folgen Null-Indexierung. Also die Indizes der Zeilen und Spalten für das NumPy-Array array_2
sind wie folgt:

Rufen wir nun die argmax()
Funktion auf das zweidimensionale Array, array_2
.
print(np.argmax(array_2))
# Output
4
Auch wenn wir angerufen haben argmax()
auf das zweidimensionale Array angewendet wird, gibt es immer noch 4 zurück. Dies ist identisch mit der Ausgabe für das eindimensionale Array, array_1
aus dem vorherigen Abschnitt.
Warum ist das so? 🤔
Das liegt daran, dass wir keinen Wert für den Achsenparameter angegeben haben. Wenn dieser Achsenparameter nicht festgelegt ist, wird standardmäßig die argmax()
Funktion gibt den Index des maximalen Elements entlang des abgeflachten Arrays zurück.
Was ist ein abgeflachtes Array? Wenn es ein N-dimensionales Array der Form d1 x d2 x ... x dNwobei d1, d2 bis dN die Größen des Feldes entlang der N Dimensionen sind, dann ist die abgeflachte Reihe ist ein langes eindimensionales Array der Größe d1 * d2 * ... * dN.
Um zu überprüfen, wie das geglättete Array aussieht für array_2
können Sie den Befehl flatten()
Methode, wie unten dargestellt:
array_2.flatten()
# Output
array([ 1, 5, 7, 2, 10, 9, 8, 4])
Index des maximalen Elements entlang der Zeilen (Achse = 0)
Suchen wir nun den Index des größten Elements entlang der Reihen (Achse = 0).
np.argmax(array_2,axis=0)
# Output
array([1, 1, 1, 1])
Diese Ausgabe kann etwas schwierig zu verstehen sein, aber wir werden verstehen, wie sie funktioniert.
Wir haben die axis
Parameter auf Null (axis = 0
), da wir den Index des größten Elements entlang der Zeilen finden möchten. Daher muss der argmax()
gibt für jede der drei Spalten die Zeilennummer zurück, in der das maximale Element vorkommt.
Veranschaulichen wir dies zum besseren Verständnis.

Aus dem obigen Diagramm und der argmax()
Ausgabe haben wir folgendes:
- Für die erste Spalte mit dem Index 0 ist der Höchstwert 10 in der zweiten Zeile bei Index = 1 auftritt.
- Für die zweite Spalte bei Index 1 ist der Höchstwert 9 in der zweiten Zeile bei Index = 1 auftritt.
- Für die dritte und vierte Spalte bei Index 2 und 3 sind die Höchstwerte 8 und 4 treten beide in der zweiten Zeile auf, bei Index = 1.
Genau aus diesem Grund haben wir die Ausgabe array([1, 1, 1, 1])
weil das größte Element entlang der Zeilen in der zweiten Zeile (für alle Spalten) auftritt.
Index des maximalen Elements entlang der Säulen (Achse = 1)
Als nächstes verwenden wir die argmax()
Funktion, um den Index des maximalen Elements entlang der Spalten zu finden.
Führen Sie das folgende Codeschnipsel aus und beobachten Sie die Ausgabe.
np.argmax(array_2,axis=1)
array([2, 0])
Können Sie die Ausgabe parsen?
Wir haben festgelegt axis = 1
um den Index des maximalen Elements entlang der Spalten zu berechnen.
Die argmax()
gibt für jede Zeile die Spaltennummer zurück, in der der Höchstwert auftritt.
Hier ist eine visuelle Erklärung:

Aus dem obigen Diagramm und der argmax()
Ausgabe haben wir folgendes:
- Für die erste Zeile bei Index 0 ist der Höchstwert 7 tritt in der dritten Spalte bei Index = 2 auf.
- Für die zweite Zeile bei Index 1 ist der Höchstwert 10 in der ersten Spalte bei Index = 0 auftritt.
Ich hoffe, Sie verstehen jetzt, was der Output ist, array([2, 0])
bedeutet.
Verwendung des optionalen out-Parameters in NumPy argmax()
Sie können die optionale out
der Parameter in der NumPy-Funktion argmax(), um die Ausgabe in einem NumPy-Array zu speichern.
Initialisieren wir ein Array mit Nullen, um die Ausgabe der vorherigen argmax()
Funktionsaufruf - um den Index des Maximums entlang der Spalten zu finden (axis= 1
).
out_arr = np.zeros((2,))
print(out_arr)
[0. 0.]
Gehen wir noch einmal auf das Beispiel ein, bei dem es darum geht, den Index des größten Elements entlang der Spalten zu finden (axis = 1
) und setzen die out
zu out_arr
die wir oben definiert haben.
np.argmax(array_2,axis=1,out=out_arr)
Wir sehen, dass der Python-Interpreter eine TypeError
als die out_arr
wurde standardmäßig mit einem Array von Floats initialisiert.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/numpy/core/fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
56 try:
---> 57 return bound(*args, **kwds)
58 except TypeError:
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
Daher sollte bei der Einstellung der out
Parameter an das Ausgabe-Array zu übergeben, ist es wichtig sicherzustellen, dass das Ausgabe-Array die richtige Form und den richtigen Datentyp hat. Da Array-Indizes immer Ganzzahlen sind, sollten wir den dtype
Parameter zu int
bei der Definition des Ausgabe-Arrays.
out_arr = np.zeros((2,),dtype=int)
print(out_arr)
# Output
[0 0]
Wir können nun fortfahren und die argmax()
Funktion sowohl mit dem axis
und out
Parameter, und dieses Mal läuft es ohne Fehler.
np.argmax(array_2,axis=1,out=out_arr)
Die Ausgabe des argmax()
Funktion kann nun im Array aufgerufen werden out_arr
.
print(out_arr)
# Output
[2 0]
Schlussfolgerung
Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie man die NumPy argmax() Funktion verwendet. Sie können die Codebeispiele in einer Jupyter-Notizbuch.
Lassen wir das Gelernte Revue passieren.
- Die NumPy-Funktion argmax() gibt den Index des maximalen Elements in einem Array zurück. Wenn das maximale Element mehr als einmal in einem Array vorkommt adann np.argmax(a) gibt den Index des ersten Vorkommens des Elements zurück.
- Wenn Sie mit mehrdimensionalen Arrays arbeiten, können Sie die optionale axis um den Index des maximalen Elements entlang einer bestimmten Achse zu erhalten. Zum Beispiel in einem zweidimensionalen Array: durch Setzen von axis = 0 und axis = 1können Sie den Index des größten Elements in den Zeilen bzw. Spalten ermitteln.
- Wenn Sie den zurückgegebenen Wert in einem anderen Array speichern möchten, können Sie das optionale out Parameter an das Ausgabe-Array übergeben. Das Ausgabe-Array sollte jedoch von kompatibler Form und Datentyp sein.
Als Nächstes sehen Sie sich den ausführlichen Leitfaden an Python-Sätze. Lernen Sie auch, wie Sie die Python-Schlaf-Funktion um Verzögerungen in Ihren Code einzufügen.