Значения рангов в массиве NumPy

  1. Рейтинг NumPy с помощью метода numpy.argsort()
  2. Рейтинг NumPy с функцией scipy.stats.rankdata() в Python

В этом руководстве будут представлены методы ранжирования данных внутри массива Python NumPy.

Топ 5 направлений в ...
Топ 5 направлений в Азии для цифровых кочевников

Рейтинг NumPy с помощью метода numpy.argsort()

Метод numpy.argsort() используется для получения индексов, которые можно использовать для сортировки массива NumPy. Эти индексы также можно использовать в качестве рангов для каждого элемента внутри массива. Метод numpy.argsort() вызывается массивом и возвращает ранг каждого элемента внутри массива в виде другого массива.

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)

Выход:

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

Мы ранжировали элементы внутри массива NumPy array с помощью функции numpy.argsort() в приведенном выше коде. Сначала мы создали наш массив с помощью функции np.array(). Затем мы использовали функцию array.argsort() и сохранили значения внутри массива temp. После этого мы создали еще один массив ranks, содержащий ранг каждого элемента в array. Затем мы присвоили ранг каждого элемента внутри array каждому элементу ranks с помощью ranks[temp] = np.arange(len(array)).

Метод, описанный в вышеупомянутом примере кодирования, работает нормально, но мы можем еще больше упростить наш код, дважды используя функцию numpy.argsort(). Это явление демонстрируется в приведенном ниже примере кодирования.

import numpy as np

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

temp = array.argsort()

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

Выход:

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

Мы создали еще один массив rank и присвоили ранг каждого элемента внутри array каждому элементу ranks с помощью ranks = temp.argsort().

Рейтинг NumPy с функцией scipy.stats.rankdata() в Python

Мы также можем использовать функцию rankdata() внутри библиотеки scipy.stats, чтобы получить ранг каждого элемента в нашем массиве NumPy. Функция rankdata() принимает массив в качестве входного параметра, ранжирует каждый элемент внутри массива и возвращает результат в виде другого массива такой же длины.

from scipy.stats import rankdata
import numpy as np

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

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

Выход:

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

Сначала мы создали наш массив с помощью функции np.array(). Затем мы использовали функцию rankdata(array) и сохранили значения внутри массива ranks.