Як упорядкувати елементи в масиві 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()
Наступний код показує, як використовувати функцію Rankdata() SciPy для ранжування елементів масиву:
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() призначає середні ранги всім значенням зі зв’язками.
Однак ви можете використовувати аргумент method для обробки посилань іншим способом.
Наприклад, наступний код показує, як використовувати порядковий номер як метод керування посиланнями:
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 і dense .
Дізнайтеся про кожен метод у документації SciPy .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в NumPy:
Як видалити повторювані елементи з масиву NumPy
Як перетворити масив NumPy з плаваючою точкою в цілі числа
Як перетворити матрицю NumPy на масив