Valori di rango nell'array NumPy

Muhammad Maisam Abbas 30 gennaio 2023
  1. NumPy Rank con il metodo numpy.argsort()
  2. NumPy Rank con la funzione scipy.stats.rankdata() in Python
Valori di rango nell'array NumPy

Questo tutorial introdurrà i metodi per classificare i dati all’interno di un array Python NumPy.

NumPy Rank con il metodo numpy.argsort()

Il metodo numpy.argsort() viene utilizzato per ottenere gli indici che possono essere utilizzati per ordinare un array NumPy. Questi indici possono anche essere usati come ranghi per ogni elemento all’interno dell’array. Il metodo numpy.argsort() viene chiamato dall’array e restituisce il rango di ogni elemento all’interno dell’array sotto forma di un altro array.

import numpy as np

array = np.array([1, 8, 5, 7, 9])

temp = array.argsort()

ranks = np.empty_like(temp)

ranks[temp] = np.arange(len(array))
print(array)
print(ranks)

Produzione:

[1 8 5 7 9]
[0 3 1 2 4]

Abbiamo classificato gli elementi all’interno dell’array NumPy array usando la funzione numpy.argsort() nel codice sopra. Per prima cosa abbiamo creato il nostro array con la funzione np.array(). Abbiamo quindi utilizzato la funzione array.argsort() e memorizzato i valori all’interno dell’array temp. Successivamente, abbiamo creato un altro array, ranks, che contiene il rango di ciascun elemento nell’array. Abbiamo quindi assegnato il rango di ogni elemento all’interno dell’array a ciascun elemento dei ranks con ranks[temp] = np.arange(len(array)).

Il metodo discusso nell’esempio di codifica sopra menzionato funziona bene, ma possiamo semplificare ulteriormente il nostro codice utilizzando la funzione numpy.argsort() due volte. Questo fenomeno è dimostrato nell’esempio di codifica seguente.

import numpy as np

array = np.array([1, 8, 5, 7, 9])

temp = array.argsort()

ranks = temp.argsort()
print(array)
print(ranks)

Produzione:

[1 8 5 7 9]
[0 3 1 2 4]

Abbiamo creato un altro array ranks e assegnato il rango di ogni elemento all’interno dell’array a ciascun elemento dei ranks con ranks = temp.argsort().

NumPy Rank con la funzione scipy.stats.rankdata() in Python

Possiamo anche usare la funzione rankdata() all’interno della libreria scipy.stats per ottenere il rango di ogni elemento all’interno del nostro array NumPy. La funzione rankdata() prende l’array come parametro di input, classifica ogni elemento all’interno dell’array e restituisce il risultato sotto forma di un altro array della stessa lunghezza.

from scipy.stats import rankdata
import numpy as np

array = np.array([1, 8, 5, 7, 9])

ranks = rankdata(array)
print(array)
print(ranks)

Produzione:

[1 8 5 7 9]
[1. 4. 2. 3. 5.]

Per prima cosa abbiamo creato il nostro array con la funzione np.array(). Abbiamo quindi utilizzato la funzione rankdata(array) e memorizzato i valori all’interno dell’array ranks.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn