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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *