Valores de rango en NumPy Array

Muhammad Maisam Abbas 30 enero 2023
  1. Rango NumPy con el método numpy.argsort()
  2. Rango NumPy con la función scipy.stats.rankdata() en Python
Valores de rango en NumPy Array

Este tutorial presentará los métodos para clasificar los datos dentro de un array Python NumPy.

Rango NumPy con el método numpy.argsort()

El método numpy.argsort() se usa para obtener los índices que se pueden usar para ordenar un array NumPy. Estos índices también se pueden usar como rangos para cada elemento dentro del array. El método numpy.argsort() es llamado por el array y devuelve el rango de cada elemento dentro del array en forma de otra matriz.

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)

Producción :

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

Clasificamos los elementos dentro del array NumPy array usando la función numpy.argsort() en el código anterior. Primero creamos nuestra matriz con la función np.array(). Luego usamos la función array.argsort() y almacenamos los valores dentro del array temp. Después de eso, creamos otra matriz, ranks, que contiene el rango de cada elemento en la array. Luego asignamos el rango de cada elemento dentro de la array a cada elemento de las ranks con ranks[temp] = np.arange(len(array)).

El método discutido en el ejemplo de codificación mencionado anteriormente funciona bien, pero podemos simplificar aún más nuestro código usando la función numpy.argsort() dos veces. Este fenómeno se demuestra en el siguiente ejemplo de codificación.

import numpy as np

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

temp = array.argsort()

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

Producción :

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

Creamos otra matriz ranks y asignamos el rango de cada elemento dentro de la array a cada elemento de las ranks con ranks = temp.argsort().

Rango NumPy con la función scipy.stats.rankdata() en Python

También podemos usar la función rankdata() dentro de la biblioteca scipy.stats para obtener el rango de cada elemento dentro de nuestra matriz NumPy. La función rankdata() toma el array como parámetro de entrada, clasifica cada elemento dentro del array y devuelve el resultado en forma de otra matriz de la misma longitud.

from scipy.stats import rankdata
import numpy as np

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

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

Producción :

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

Primero creamos nuestra matriz con la función np.array(). Luego usamos la función rankdata(array) y almacenamos los valores dentro del 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