Schnelleres Ranking von Array-Elementen in Python/NumPy ohne doppelte Sortierung
Bei der Datenanalyse und beim maschinellen Lernen ist es oft notwendig, Elemente in einem zu ordnen Array basierend auf ihren Werten. Das doppelte Sortieren des Arrays für die Rangfolge kann zeitaufwändig sein.
Erster Ansatz
Eine gängige Methode wird unten beispielhaft dargestellt:
<code class="python">import numpy as np # Sample array array = np.array([4, 2, 7, 1]) # Temporary array for sorting temp = array.argsort() # Rank computation ranks = np.arange(len(array))[temp.argsort()]</code>
Dieser Ansatz beinhaltet zwei Sortiervorgänge, was die Komplexität erhöht.
Optimierte Lösung
Um eine doppelte Sortierung zu vermeiden, können wir die argsort()-Funktion von NumPy zweimal nutzen:
<code class="python">array = np.array([4, 2, 7, 1]) # First argsort to obtain element order order = array.argsort() # Second argsort to obtain ranking ranks = order.argsort()</code>
Erklärung
Zuerst verwenden wir argsort(), um die Reihenfolge der Array-Elemente zu ermitteln. Dann wenden wir argsort() erneut auf die resultierende Reihenfolge an, wodurch wir die Rangfolge erhalten.
Fazit
Diese optimierte Technik verbessert die Geschwindigkeit der Rangfolge von Array-Elementen erheblich unnötiges Sortieren vermeiden. Verwenden Sie für hochdimensionale Arrays das Achsenargument in argsort, um die Achse für die Sortierung anzugeben.
Das obige ist der detaillierte Inhalt vonWie ordne ich Array-Elemente in Python/NumPy effizient ohne doppelte Sortierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!