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

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

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:

  1. numpy.put() działa także dla tablic wielowymiarowych – używa płaskiej reprezentacji tablicy.
  2. Obsługuje tryby indeksowania poza zakresem ('wrap' i 'clip').
  3. 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
KajoDataSpace