So ordnen sie elemente im numpy-array an (mit beispielen)
Sie können eine der folgenden Methoden verwenden, um die Reihenfolge der Elemente in einem NumPy-Array zu berechnen:
Methode 1: Verwenden Sie argsort() von NumPy
import numpy as np
ranks = np. array (my_array). argsort (). argsort ()
Methode 2: Verwenden Sie SciPys Rankdata()
from scipy. stats import rankdata
ranks = rankdata(my_array)
Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden NumPy-Array verwendet wird:
import numpy as np
#define array of values
my_array = np. array ([3, 5, 2, 1, 9, 9])
#view array
print (my_array)
[3 5 2 1 9 9]
Beispiel 1: Elemente im NumPy-Array mit argsort() sortieren
Der folgende Code zeigt, wie man die argsort() -Funktion von NumPy zum Sortieren von Array-Elementen verwendet:
#calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()
#view ranks
print (ranks)
[2 3 1 0 4 5]
Die Ergebnisse zeigen den Rang jedes Elements im ursprünglichen Array, wobei 0 den niedrigsten Wert darstellt.
Der Vorteil dieses Ansatzes besteht darin, dass Sie keine zusätzlichen Module laden müssen. Der Nachteil besteht jedoch darin, dass argsort() nur eine Methode zur Verarbeitung von Links hat.
Standardmäßig verwendet argsort() eine Ordinalmethode zur Verarbeitung von Links, was bedeutet, dass der verknüpfte Wert, der zuerst erscheint, automatisch den niedrigeren Rang erhält.
Beispiel 2: Elemente im NumPy-Array mit Rankdata() einordnen
Der folgende Code zeigt, wie Sie die Rankdata() -Funktion von SciPy verwenden, um Array-Elemente in eine Rangfolge zu bringen:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array)
#view ranks
print (ranks)
array([3. , 4. , 2. , 1. , 5.5, 5.5])
Die Ergebnisse zeigen den Rang jedes Elements im ursprünglichen Array, wobei 1 den kleinsten Wert darstellt.
Wenn 0 den kleinsten Wert darstellen soll, subtrahieren Sie einfach 1 von jedem Wert:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array) - 1
#view ranks
print (ranks)
[2. 3. 1. 0. 4.5 4.5]
Standardmäßig weist die Funktion Rankdata() allen Werten mit Gleichstand durchschnittliche Ränge zu.
Sie können das Methodenargument jedoch verwenden, um Links auf andere Weise zu behandeln.
Der folgende Code zeigt beispielsweise, wie Ordinalzahlen als Linkverwaltungsmethode verwendet werden:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array, method=' ordinal ') - 1
#view ranks
print (ranks)
[2 3 1 0 4 5]
Dies führt zu denselben Ergebnissen wie die argsort() -Methode von NumPy.
Zu den weiteren Linkverwaltungsmethoden gehören „Min“ , „Max “ und „Dense“ .
Erfahren Sie mehr über die einzelnen Methoden in der SciPy-Dokumentation .
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in NumPy ausführen:
So entfernen Sie doppelte Elemente aus dem NumPy-Array
So konvertieren Sie ein NumPy-Array von Floats in Ganzzahlen
So konvertieren Sie eine NumPy-Matrix in ein Array