Como ordenar elementos no array numpy (com exemplos)
Você pode usar qualquer um dos seguintes métodos para calcular a ordem dos elementos em uma matriz NumPy:
Método 1: use argsort() do NumPy
import numpy as np
ranks = np. array (my_array). argsort (). argsort ()
Método 2: Use Rankdata() do SciPy
from scipy. stats import rankdata
ranks = rankdata(my_array)
Os exemplos a seguir mostram como usar cada método na prática com o seguinte 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]
Exemplo 1: Classificar elementos em array NumPy usando argsort()
O código a seguir mostra como usar a função argsort() do NumPy para classificar elementos do 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]
Os resultados mostram a classificação de cada elemento na matriz original, com 0 representando o valor mais baixo.
A vantagem dessa abordagem é que você não precisa carregar nenhum módulo adicional, mas a desvantagem é que argsort() possui apenas um método para lidar com links.
Por padrão, argsort() usa um método ordinal para lidar com links, o que significa que o valor vinculado que aparece primeiro recebe automaticamente a classificação mais baixa.
Exemplo 2: Classificar elementos no array NumPy usando Rankdata()
O código a seguir mostra como usar a função Rankdata() do SciPy para classificar elementos do 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])
Os resultados mostram a classificação de cada elemento na matriz original, com 1 representando o menor valor.
Se você quiser que 0 represente o menor valor, basta subtrair 1 de cada valor:
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]
Por padrão, a função Rankdata() atribui classificações médias a todos os valores com empates.
No entanto, você pode usar o argumento do método para lidar com links de uma maneira diferente.
Por exemplo, o código a seguir mostra como usar ordinal como método de gerenciamento de link:
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]
Isso produz os mesmos resultados que o método argsort() do NumPy.
Outros métodos de gerenciamento de links incluem min , max e Dense .
Aprenda sobre cada método na documentação do SciPy .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no NumPy:
Como remover elementos duplicados do array NumPy
Como converter uma matriz NumPy de números flutuantes em inteiros
Como converter uma matriz NumPy em um array