
Funkcja numpy.argsort()
to jedno z najważniejszych narzędzi w bibliotece NumPy, które pozwala na efektywne sortowanie danych. Zamiast bezpośrednio sortować wartości, zwraca indeksy, które umożliwiają uzyskanie posortowanego wyniku. Jest to szczególnie przydatne przy analizie danych oraz w wielu algorytmach uczenia maszynowego. W tym artykule przyjrzymy się dokładnie, jak działa numpy.argsort()
w języku Python oraz przedstawimy jego praktyczne zastosowanie.
Co to jest numpy.argsort()
?
numpy.argsort()
to funkcja biblioteki NumPy, która zwraca indeksy w kolejności umożliwiającej posortowanie tablicy wejściowej. Nie zmienia jednak pierwotnej tablicy, tylko informuje, w jakiej kolejności należy ułożyć elementy, by uzyskać posortowaną wersję.
Podstawowa składnia numpy.argsort()
Składnia tej funkcji jest bardzo prosta:
numpy.argsort(a, axis=-1, kind=None, order=None)
Główne argumenty tej funkcji to:
a
– tablica wejściowa, dla której chcemy uzyskać indeksy sortowania.axis
– określa oś, wzdłuż której ma odbyć się sortowanie (domyślnie-1
, czyli ostatnia oś).kind
– określa algorytm sortowania (domyślniequicksort
).order
– używane w przypadku sortowania struktur danych.
Jak działa numpy.argsort()
w praktyce?
Najlepiej zrozumieć działanie tej funkcji przez prosty przykład:
import numpy as np
arr = np.array([30, 10, 20])
indices = np.argsort(arr)
print(indices)
# Output: [1 2 0]
Wynik oznacza, że najmniejszy element (10
) znajduje się na indeksie 1
, następny w kolejności (20
) na indeksie 2
, a największy (30
) na indeksie 0
.
Używanie numpy.argsort()
do sortowania tablicy
Jeśli chcemy posortować tablicę na podstawie zwróconych indeksów, możemy to zrobić w ten sposób:
sorted_arr = arr[indices]
print(sorted_arr)
# Output: [10 20 30]
Dzięki temu mamy pełną kontrolę nad kolejnością sortowania.
Sortowanie wielowymiarowych tablic
numpy.argsort()
obsługuje także tablice wielowymiarowe. Oto przykład sortowania macierzy:
matrix = np.array([[30, 20, 10], [60, 50, 40]])
indices_axis_1 = np.argsort(matrix, axis=1)
print(indices_axis_1)
# Output:
# [[2 1 0]
# [2 1 0]]
Wynik oznacza, że dla każdego wiersza wyznaczono indeksy do ich posortowania.
Przykład zastosowania w analizie danych
Załóżmy, że mamy dwie tablice – jedną z wartościami, a drugą z etykietami. Chcemy posortować wartości i jednocześnie utrzymać odpowiednie przypisanie etykiet. Można to zrobić tak:
values = np.array([85, 90, 75, 95])
labels = np.array(["A", "B", "C", "D"])
sorted_indices = np.argsort(values)
sorted_values = values[sorted_indices]
sorted_labels = labels[sorted_indices]
print(sorted_values) # [75 85 90 95]
print(sorted_labels) # ['C' 'A' 'B' 'D']
To podejście jest powszechnie stosowane np. w analizie wyników testów.
Rodzaje sortowania w numpy.argsort()
Funkcja obsługuje kilka rodzajów algorytmów sortowania, które można określić poprzez argument kind
:
Rodzaj sortowania | Opis |
---|---|
quicksort | Domyślny, szybki, ale niestabilny. |
mergesort | Stabilny, ale wolniejszy. |
heapsort | Wolniejszy niż quicksort, ale używa mniej pamięci. |
stable | Stabilny sort – zachowuje kolejność przy równych wartościach. |
Podsumowanie
Funkcja numpy.argsort()
w języku Python jest niezwykle użyteczna, gdy chcemy uzyskać indeksy potrzebne do posortowania wartości. Ma szerokie zastosowanie w analizie danych, przetwarzaniu tablic wielowymiarowych i w algorytmach uczenia maszynowego. Dzięki możliwości wyboru algorytmu sortowania możemy dostosować działanie funkcji do naszych potrzeb.
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.