HOWTO · NumPy
Valores de classificação em NumPy Array
Podemos usar as funções numpy.argsort() e scipy.stats.rankdata() para classificar os valores dentro de um array NumPy em Python.
Nesta página
Este tutorial irá apresentar os métodos para classificar dados dentro de um array Python NumPy.
NumPy Rank com o método numpy.argsort()
O numpy.argsort() método é usado para obter os índices que podem ser usados para classificar um array NumPy. Esses índices também podem ser usados como classificações para cada elemento dentro do array. O método numpy.argsort() é chamado pelo array e retorna a classificação de cada elemento dentro do array na forma de outro 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)
Resultado:
[1 8 5 7 9]
[0 3 1 2 4]
Classificamos os elementos dentro do array NumPy array usando a função numpy.argsort() no código acima. Primeiro criamos nosso array com a função np.array(). Em seguida, usamos a função array.argsort() e armazenamos os valores dentro do array temp. Depois disso, criamos outro array, ranks, que contém o rank de cada elemento no array. Em seguida, atribuímos a classificação de cada elemento dentro do array a cada elemento dos ranks com ranks[temp] = np.arange(len(array)).
O método discutido no exemplo de codificação mencionado acima funciona bem, mas podemos simplificar ainda mais nosso código usando a função numpy.argsort() duas vezes. Esse fenômeno é demonstrado no exemplo de codificação abaixo.
import numpy as np
array = np.array([1, 8, 5, 7, 9])
temp = array.argsort()
ranks = temp.argsort()
print(array)
print(ranks)
Resultado:
[1 8 5 7 9]
[0 3 1 2 4]
Criamos outro array ranks e atribuímos o rank de cada elemento dentro do array a cada elemento dos ranks com ranks = temp.argsort().
Classificação NumPy com função scipy.stats.rankdata() em Python
Também podemos usar a função rankdata() dentro da biblioteca scipy.stats para obter a classificação de cada elemento dentro de nosso array NumPy. A função rankdata() leva o array como um parâmetro de entrada, classifica cada elemento dentro do array e retorna o resultado na forma de outro array do mesmo comprimento.
from scipy.stats import rankdata
import numpy as np
array = np.array([1, 8, 5, 7, 9])
ranks = rankdata(array)
print(array)
print(ranks)
Resultado:
[1 8 5 7 9]
[1. 4. 2. 3. 5.]
Primeiro criamos nosso array com a função np.array(). Em seguida, usamos a função rankdata(array) e armazenamos os valores dentro do array ranks.