
W pracy z biblioteką NumPy w Pythonie często spotykam się z sytuacją, w której trzeba zmodyfikować konkretne elementy tablicy na podstawie ich indeksów. Właśnie do tego świetnie nadaje się funkcja numpy.put()
. W tym artykule wyjaśnię, jak działa numpy.put()
, kiedy warto jej używać i jak wygląda jej praktyczne zastosowanie.
Jak działa numpy.put w języku Python?
Funkcja numpy.put()
pozwala na bezpośrednią modyfikację elementów tablicy NumPy, wskazanych przez indeksy. Jest to bardzo użyteczne, zwłaszcza gdy chcę w jednym kroku przypisać nowe wartości do różnych miejsc w tablicy.
Podstawowa składnia wygląda następująco:
numpy.put(array, indices, values, mode='raise')
Gdzie:
array
– tablica NumPy, którą chcę zmodyfikować.indices
– lista lub tablica indeksów, które mają zostać zmienione.values
– wartości, które chcę przypisać do określonych indeksów.mode
– tryb obsługi indeksów poza zakresem (opcjonalny, domyślnie'raise'
).
Przykład zastosowania numpy.put()
Aby lepiej zrozumieć działanie, posłużę się prostym przykładem:
import numpy as np
# Tworzę tablicę NumPy
arr = np.array([10, 20, 30, 40, 50])
# Modyfikuję elementy na pozycjach 1 i 3
np.put(arr, [1, 3], [99, 77])
print(arr)
Po uruchomieniu kodu otrzymam wynik:
[10 99 30 77 50]
Jak widać, wartości w indeksach 1 i 3 zostały zmienione zgodnie z podaną listą.
Obsługa indeksów poza zakresem
Jeżeli podam indeksy, które wykraczają poza zakres tablicy, domyślnie funkcja zgłosi błąd. Jednak mogę to zmienić, używając parametru mode
. Są dostępne trzy tryby:
Tryb | Opis |
---|---|
'raise' |
Domyślny tryb – zgłasza błąd, gdy indeks jest poza zakresem. |
'wrap' |
Indeksy poza zakresem są zawijane (modulo długość tablicy). |
'clip' |
Indeksy poza zakresem są zastępowane najbliższą dozwoloną wartością. |
Oto przykład z użyciem trybu 'clip'
:
arr = np.array([1, 2, 3, 4, 5])
# Indeks 10 nie istnieje, ale dzięki 'clip' zostaje zastąpiony indeksem 4
np.put(arr, [0, 10], [99, 88], mode='clip')
print(arr)
Wynik:
[99 2 3 4 88]
Mimo że indeks 10 nie istnieje, został zastąpiony przez indeks 4 (ostatni dostępny).
Różnice między numpy.put() a bezpośrednim przypisywaniem wartości
Mogłoby się wydawać, że mogę osiągnąć to samo, przypisując wartości bezpośrednio do indeksów tablicy, np. arr[[1, 3]] = [99, 77]
. Jednak istnieją różnice:
numpy.put()
działa także dla tablic wielowymiarowych – używa płaskiej reprezentacji tablicy.- Obsługuje tryby indeksowania poza zakresem (
'wrap'
i'clip'
). - Nie wymaga spełnienia warunku kształtu (można podać wartości krótsze niż lista indeksów).
Zastosowanie w praktyce
Funkcja numpy.put()
sprawdza się, gdy chcę dynamicznie podmieniać wartości bez konieczności iterowania po tablicy. Może to być przydatne np. w analizie danych, gdzie na podstawie określonych warunków zamieniam wartości w tablicy.
Przykład: zamiana kilku losowych elementów w tablicy:
arr = np.arange(10) # Tablica [0, 1, 2, ..., 9]
# Losowe indeksy do zmiany
indices = np.random.choice(len(arr), 3, replace=False)
# Przypisanie nowych wartości
np.put(arr, indices, [-1, -2, -3])
print(arr)
W ten sposób szybko i efektywnie mogę edytować wybrane elementy w tablicy.
Podsumowanie
Funkcja numpy.put()
to świetne narzędzie do modyfikacji elementów tablic NumPy. Pozwala zmienić wartości w określonych indeksach, obsługuje tryby indeksowania poza zakresem i działa także dla tablic wielowymiarowych. Dzięki niej mogę oszczędzić czas w pracy z danymi, unikając pętli i ręcznych operacji na elementach tablicy.
Jeśli więc szukam sprawnego sposobu na modyfikowanie tablic NumPy, zdecydowanie warto znać i używać numpy.put()
.
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.