
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().
Inny ciekawy artykuł:
Jak działa numpy take 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.

