Come ordinare gli elementi nell'array numpy (con esempi)
È possibile utilizzare uno dei seguenti metodi per calcolare l’ordinamento degli elementi in un array NumPy:
Metodo 1: utilizzare argsort() da NumPy
import numpy as np
ranks = np. array (my_array). argsort (). argsort ()
Metodo 2: utilizzare Rankdata() di SciPy
from scipy. stats import rankdata
ranks = rankdata(my_array)
I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con il seguente array NumPy:
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]
Esempio 1: ordinare gli elementi nell’array NumPy utilizzando argsort()
Il codice seguente mostra come utilizzare la funzione argsort() di NumPy per ordinare gli elementi dell’array:
#calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()
#view ranks
print (ranks)
[2 3 1 0 4 5]
I risultati mostrano il rango di ciascun elemento nell’array originale, dove 0 rappresenta il valore più basso.
Il vantaggio di questo approccio è che non è necessario caricare moduli aggiuntivi, ma lo svantaggio è che argsort() ha un solo metodo per gestire i collegamenti.
Per impostazione predefinita, argsort() utilizza un metodo ordinale per gestire i collegamenti, il che significa che al valore collegato che appare per primo viene automaticamente assegnato il rango inferiore.
Esempio 2: classificare gli elementi nell’array NumPy utilizzando Rankdata()
Il codice seguente mostra come utilizzare la funzione Rankdata() di SciPy per classificare gli elementi dell’array:
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])
I risultati mostrano il rango di ciascun elemento nell’array originale, dove 1 rappresenta il valore più piccolo.
Se vuoi che 0 rappresenti il valore più piccolo, sottrai semplicemente 1 da ciascun valore:
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]
Per impostazione predefinita, la funzione Rankdata() assegna ranghi medi a tutti i valori con legami.
Tuttavia, puoi utilizzare l’argomento metodo per gestire i collegamenti in un modo diverso.
Ad esempio, il codice seguente mostra come utilizzare ordinale come metodo di gestione dei collegamenti:
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]
Ciò produce gli stessi risultati del metodo argsort() di NumPy.
Altri metodi di gestione dei collegamenti includono min , max e dense .
Ulteriori informazioni su ciascun metodo nella documentazione di SciPy .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in NumPy:
Come rimuovere gli elementi duplicati dall’array NumPy
Come convertire un array NumPy di float in numeri interi
Come convertire una matrice NumPy in un array