Jak zamówić elementy w tablicy numpy (z przykładami)


Do obliczenia kolejności elementów w tablicy NumPy możesz użyć dowolnej z poniższych metod:

Metoda 1: Użyj argsort() z NumPy

 import numpy as np

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

Metoda 2: Użyj Rankdata() SciPy

 from scipy. stats import rankdata

ranks = rankdata(my_array)

Poniższe przykłady pokazują, jak w praktyce wykorzystać każdą metodę z następującą tablicą 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]

Przykład 1: Sortowanie elementów w tablicy NumPy za pomocą argsort()

Poniższy kod pokazuje, jak używać funkcji argsort() NumPy do sortowania elementów tablicy:

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

#view ranks
print (ranks)

[2 3 1 0 4 5]

Wyniki pokazują rangę każdego elementu w oryginalnej tablicy, gdzie 0 oznacza najniższą wartość.

Zaletą tego podejścia jest to, że nie trzeba ładować żadnych dodatkowych modułów, ale wadą jest to, że argsort() ma tylko jedną metodę obsługi łączy.

Domyślnie funkcja argsort() używa metody porządkowej do obsługi łączy, co oznacza, że połączona wartość, która pojawia się jako pierwsza, automatycznie otrzymuje niższą rangę.

Przykład 2: Ranking elementów w tablicy NumPy za pomocą Rankdata()

Poniższy kod pokazuje, jak używać funkcji Rankdata() SciPy do rangowania elementów tablicy:

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

Wyniki pokazują rangę każdego elementu w oryginalnej tablicy, gdzie 1 reprezentuje najmniejszą wartość.

Jeśli chcesz, aby 0 reprezentowało najmniejszą wartość, po prostu odejmij 1 od każdej wartości:

 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]

Domyślnie funkcja Rankdata() przypisuje średnie rangi wszystkim wartościom powiązanym.

Można jednak użyć argumentu metody, aby obsługiwać łącza w inny sposób.

Na przykład poniższy kod pokazuje, jak używać liczby porządkowej jako metody zarządzania łączami:

 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]

Daje to takie same wyniki, jak metoda argsort() NumPy.

Inne metody zarządzania łączami obejmują min , max i gęsty .

Dowiedz się o każdej metodzie w dokumentacji SciPy .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w NumPy:

Jak usunąć zduplikowane elementy z tablicy NumPy
Jak przekonwertować tablicę zmiennoprzecinkową NumPy na liczby całkowite
Jak przekonwertować macierz NumPy na tablicę

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *