Heim > Backend-Entwicklung > Python-Tutorial > Wie finde ich effizient die Indizes der N größten Werte in einem NumPy-Array?

Wie finde ich effizient die Indizes der N größten Werte in einem NumPy-Array?

Susan Sarandon
Freigeben: 2024-12-25 03:59:08
Original
456 Leute haben es durchsucht

How to Efficiently Find the Indices of the Top N Largest Values in a NumPy Array?

Indizes der Top-N-Werte in einem NumPy-Array identifizieren

Mit der Funktion np.argmax ist es möglich, den Index des Maximalwerts in einem NumPy-Array zu ermitteln. Zum Abrufen der Indizes mehrerer Maximalwerte werden in diesem Artikel jedoch alternative Ansätze untersucht.

Neueste NumPy-Versionen (ab 1.8) verfügen über die Funktion argpartition, die Indizes gemäß einer angegebenen Bedingung abrufen kann. Um die Indizes der n größten Elemente zu erhalten, verwenden Sie diese Funktion mit einem negativen Argument für n, was eine absteigende Sortierung angibt.

>>> a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) # Sample array
>>> ind = np.argpartition(a, -4)[-4:] # Indices of top 4 largest elements
Nach dem Login kopieren

Im Gegensatz zu argsort arbeitet argpartition im schlimmsten Fall linear, gibt jedoch kein Ergebnis zurück sortierte Indizes. Um sie zu sortieren, verwenden Sie np.argsort für das partitionierte Array:

>>> sorted_ind = ind[np.argsort(a[ind])]
Nach dem Login kopieren

Alternativ können Sie die erweiterten Indizierungsfunktionen von NumPy nutzen:

>>> descending_order = np.argsort(a)[::-1] # Indices of elements in descending order
>>> top_n = descending_order[:n] # Top n indices
Nach dem Login kopieren

Es gibt auch kundenspezifische Lösungen, wie zum Beispiel:

  • Sortieren des Arrays und Auswählen der obersten n Elemente
  • Iteratives Vergleichen von Elementen und Aktualisieren einer Indexliste
  • Verwenden der Funktion max() mit bedingten Zuweisungen

Das obige ist der detaillierte Inhalt vonWie finde ich effizient die Indizes der N größten Werte in einem NumPy-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage