
Sortowanie tablic w Pythonie to jedna z kluczowych operacji w analizie danych czy machine learningu. Biblioteka NumPy
oferuje funkcję numpy.sort()
, która umożliwia szybkie i wygodne sortowanie tablic wielowymiarowych. W tym artykule przyjrzymy się dokładnie, jak działa numpy.sort()
w języku Python, a także zaprezentuję praktyczne przykłady zastosowania.
Czym jest numpy.sort()?
Funkcja numpy.sort()
służy do sortowania elementów tablicy NumPy. Obsługuje zarówno tablice jednowymiarowe, jak i wielowymiarowe, oferując przy tym możliwość sortowania wzdłuż określonej osi.
Jej podstawowa składnia wygląda tak:
numpy.sort(a, axis=-1, kind='quicksort', order=None)
Gdzie:
a
– tablica do posortowania,axis
– oś, wzdłuż której ma zostać wykonane sortowanie (domyślnie -1, czyli ostatnia oś),kind
– algorytm sortowania ('quicksort'
,'mergesort'
,'heapsort'
,'stable'
),order
– do sortowania tablic z polami (strukturalnymi danymi).
Przykłady zastosowania numpy.sort()
Sortowanie tablicy jednowymiarowej
Najprostszy przypadek to sortowanie listy liczb:
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2])
sorted_arr = np.sort(arr)
print(sorted_arr)
# Wynik: [1 1 2 3 4 5 9]
Funkcja numpy.sort()
tworzy nową posortowaną tablicę i nie zmienia oryginalnej.
Sortowanie tablicy wielowymiarowej
Jeśli mamy tablicę 2D, możemy określić, wzdłuż której osi chcemy przeprowadzić sortowanie:
arr_2d = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])
sorted_arr_2d = np.sort(arr_2d, axis=1)
print(sorted_arr_2d)
# Wynik:
# [[1 3 4]
# [1 5 9]
# [2 5 6]]
W tym przypadku sortowanie odbywa się wzdłuż wierszy (oś axis=1
), czyli każda lista wewnętrzna jest osobno uporządkowana.
Sortowanie wzdłuż różnych osi
Możemy także posortować tablicę względem kolumn. Wystarczy zmienić wartość parametru axis
na 0
:
sorted_arr_2d_axis0 = np.sort(arr_2d, axis=0)
print(sorted_arr_2d_axis0)
# Wynik:
# [[1 1 4]
# [2 5 5]
# [3 6 9]]
Teraz wartości zostały posortowane pionowo, w obrębie każdej kolumny.
Rodzaje algorytmów sortowania
Funkcja numpy.sort()
pozwala na wybór różnych algorytmów sortowania:
Nazwa | Opis |
---|---|
'quicksort' |
Domyślny algorytm. Szybki, ale niestabilny. |
'mergesort' |
Stabilny, ale nieco wolniejszy. |
'heapsort' |
Wykorzystuje strukturę kopca, zawsze O(n log n). |
'stable' |
Stabilne sortowanie, najczęściej mergesort. |
Przykładowe wykorzystanie stabilnego algorytmu mergesort:
stable_sorted_arr = np.sort(arr, kind='mergesort')
Sortowanie tablic ze strukturami danych
numpy.sort()
obsługuje także tablice ze strukturami danych:
dtype = [('name', 'S10'), ('score', int)]
data = np.array([('Alice', 75), ('Bob', 92), ('Charlie', 88)], dtype=dtype)
sorted_data = np.sort(data, order='score')
print(sorted_data)
Wynik to posortowana tablica względem wartości w kolumnie 'score'
.
Podsumowanie
Funkcja numpy.sort()
to potężne narzędzie do sortowania tablic NumPy. Obsługuje sortowanie jedno- i wielowymiarowe, pozwala na wybór algorytmu sortowania oraz umożliwia sortowanie tablic ze strukturami danych.
Najważniejsze cechy, które warto zapamiętać:
- Domyślnie sortuje wzdłuż ostatniej osi.
- Nie modyfikuje oryginalnej tablicy – zwraca nową posortowaną.
- Umożliwia wybór algorytmu sortowania (quicksort, mergesort, heapsort, stable).
- Obsługuje tablice jednowymiarowe i wielowymiarowe.
- Może sortować względem konkretnych pól w tablicach ze strukturami danych.
Dzięki temu numpy.sort()
to niezwykle przydatne narzędzie w pracy z danymi w Pythonie.
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.