
Język Python to prawdziwy skarb dla analityków danych, matematyków i wszystkich, którzy pracują z dużymi ilościami informacji. Jedną z najpotężniejszych bibliotek do przetwarzania tablic i macierzy jest NumPy. Wśród wielu dostępnych funkcji znajduje się numpy.take(), która pozwala pobierać elementy z tablicy na podstawie podanych indeksów. W tym artykule przyjrzymy się dokładnie, jak działa numpy take w języku Python oraz omówimy praktyczne przykłady jego użycia.
Co to jest numpy.take()?
Funkcja numpy.take() pozwala na pobranie określonych elementów z tablicy, bazując na przekazanej liście indeksów. Można ją traktować jako bardziej wydajną metodę indeksowania, szczególnie przy pracy na dużych zbiorach danych.
Podstawowa składnia wygląda następująco:
numpy.take(a, indices, axis=None, out=None, mode='raise')
Gdzie:
- a – wejściowa tablica NumPy.
- indices – lista indeksów, które chcemy pobrać.
- axis – oś, wzdłuż której mają być pobrane wartości (domyślnie
Noneoznacza spłaszczenie tablicy). - out – opcjonalna tablica wyjściowa.
- mode – sposób obsługi indeksów poza zakresem (
'raise','wrap','clip').
Podstawowy przykład użycia
Najprostszy przykład użycia numpy.take() to pobranie z tablicy elementów znajdujących się w określonych pozycjach.
import numpy as np
a = np.array([10, 20, 30, 40, 50])
indices = [0, 2, 4]
result = np.take(a, indices)
print(result) # Output: [10 30 50]
W powyższym przykładzie pobieram wartości z indeksów 0, 2 oraz 4. Wynikiem jest nowa tablica zawierająca wartości [10, 30, 50].
Użycie axis do określenia wymiarów
Kiedy operujemy na wielowymiarowych tablicach, warto korzystać z parametru axis, aby wybrać wartości wzdłuż konkretnej osi.
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
indices = [0, 2]
result = np.take(a, indices, axis=0)
print(result)
Rezultat:
[[1 2 3]
[7 8 9]]
W powyższym przykładzie wybrałem wiersze o indeksach 0 i 2 z dwuwymiarowej tablicy.
Obsługa indeksów spoza zakresu
Domyślnie, jeśli podamy indeks spoza zakresu, otrzymamy błąd:
import numpy as np
a = np.array([10, 20, 30, 40, 50])
indices = [0, 6]
result = np.take(a, indices) # IndexError
Aby temu zapobiec, można użyć trybu wrap lub clip:
mode='wrap'– indeksy są zawijane (np. indeks 6 traktowany jak 1).mode='clip'– indeksy spoza zakresu są zastępowane najbliższą dostępną wartością.
result_wrap = np.take(a, indices, mode='wrap')
print(result_wrap) # Output: [10 20]
result_clip = np.take(a, indices, mode='clip')
print(result_clip) # Output: [10 50]
numpy.take() a zwykłe indeksowanie
Można by pomyśleć, że numpy.take() jest zbędne, bo przecież zwykłe indeksowanie w NumPy pozwala na podobne operacje:
result = a[[0, 2, 4]]
Jednak numpy.take() jest bardziej elastyczne i wydajne w niektórych przypadkach, np. umożliwia wybór wzdłuż konkretnej osi w wielowymiarowych tablicach.
Porównanie trybów w numpy.take()
| Tryb | Opis | Przykład indeksu spoza zakresu | Wynik |
|---|---|---|---|
'raise' |
Wyrzuca błąd | 6 | IndexError |
'wrap' |
Indeksowanie cykliczne | 6 | Wartość z indeksu 1 |
'clip' |
Przycinanie do granic | 6 | Ostatni element |
Podsumowanie
Funkcja numpy.take() to niezwykle przydatne narzędzie do wybierania wartości na podstawie indeksów. Oferuje:
- Lepszą wydajność w porównaniu do klasycznego indeksowania.
- Obsługę wielowymiarowych tablic za pomocą parametru
axis. - Możliwość kontrolowania obsługi indeksów spoza zakresu poprzez tryby
'wrap'i'clip'.
Teraz już wiesz, jak działa numpy take w języku Python. Mam nadzieję, że przedstawione przykłady pomogą ci w codziennej pracy z danymi!
Inny ciekawy artykuł:
Jak działa numpy select w języku Python? Przykład zastosowania
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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

