Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich effizient die Indizes der N größten Werte in einem NumPy-Array?
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
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])]
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
Es gibt auch kundenspezifische Lösungen, wie zum Beispiel:
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!