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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *