Jak działa numpy argsort w języku Python? Przykład zastosowania

Jak działa numpy argsort w języku Python? Przykład zastosowania
„`html

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ślnie quicksort).
  • 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.

„` Inny ciekawy artykuł: Jak działa numpy argmin w języku Python? Przykład zastosowania
KajoDataSpace