Как упорядочить элементы в массиве numpy (с примерами)


Вы можете использовать любой из следующих методов для расчета порядка элементов в массиве NumPy:

Способ 1: используйте argsort() из NumPy

 import numpy as np

ranks = np. array (my_array). argsort (). argsort ()

Метод 2: используйте Rankdata() SciPy

 from scipy. stats import rankdata

ranks = rankdata(my_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]

Пример 1. Сортировка элементов в массиве NumPy с помощью argsort()

Следующий код показывает, как использовать функцию argsort() NumPy для сортировки элементов массива:

 #calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()

#view ranks
print (ranks)

[2 3 1 0 4 5]

Результаты показывают ранг каждого элемента исходного массива, где 0 соответствует наименьшему значению.

Преимущество этого подхода в том, что вам не нужно загружать какие-либо дополнительные модули, но недостатком является то, что argsort() имеет только один метод для обработки ссылок.

По умолчанию argsort() использует порядковый метод для обработки ссылок, то есть связанному значению, которое появляется первым, автоматически присваивается более низкий ранг.

Пример 2. Ранжирование элементов в массиве NumPy с использованием Rankdata()

Следующий код показывает, как использовать функцию SciPy Rankdata() для ранжирования элементов массива:

 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])

Результаты показывают ранг каждого элемента исходного массива, где 1 соответствует наименьшему значению.

Если вы хотите, чтобы 0 представлял наименьшее значение, просто вычтите 1 из каждого значения:

 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]

По умолчанию функция Rankdata() присваивает средние ранги всем значениям со связями.

Однако вы можете использовать аргумент метода для обработки ссылок другим способом.

Например, следующий код показывает, как использовать порядковый номер в качестве метода управления ссылками:

 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]

Это дает те же результаты, что и метод argsort() NumPy.

Другие методы управления ссылками включают min , max и Density .

Узнайте о каждом методе в документации SciPy .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в NumPy:

Как удалить повторяющиеся элементы из массива NumPy
Как преобразовать массив чисел с плавающей запятой NumPy в целые числа
Как преобразовать матрицу NumPy в массив

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *