Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 13, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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:

  1. Finden Sie das maximale Element.
  2. Ermitteln Sie den Index des größten Elements.

Unter array_1Der 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.

numpy-argmax

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 lautet Trueund
- Elemente aus y wenn die Bedingung lautet False.

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 der argmax() Funktion.

Hinweis: Ab NumPy Version 1.22.0 gibt es eine zusätzliche keepdims Parameter. Wenn wir den Parameter axis Parameter in der argmax() Funktionsaufruf wird das Array entlang dieser Achse reduziert. Aber das Setzen der keepdims Parameter zu True 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:

numpy-argmax-2darray

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_2kö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.

numpy-argmax-axis0

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:

numpy-argmax-axis1

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 TypeErrorals 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.

  • Bala Priya C
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder