
Funkcja numpy.where() to jedno z najbardziej przydatnych narzędzi dostępnych w bibliotece NumPy. Pozwala na szybkie wyszukiwanie i zastępowanie wartości w tablicach. W tym artykule pokażę, jak działa numpy where w języku Python oraz przedstawię konkretne przykłady zastosowania.
Co to jest numpy.where()?
Funkcja numpy.where() umożliwia zwracanie indeksów elementów spełniających określony warunek lub modyfikowanie wartości w tablicy NumPy w zależności od warunku logicznego.
Podstawowa składnia wygląda następująco:
numpy.where(condition, [x, y])
condition– warunek logiczny, który określa, które wartości mają być wybrane.x(opcjonalne) – wartości używane, gdy warunek jest spełniony.y(opcjonalne) – wartości używane, gdy warunek nie jest spełniony.
Jeśli podamy tylko condition, funkcja zwróci indeksy elementów spełniających warunek.
Zwracanie indeksów spełniających warunek
Jeśli użyję numpy.where() w wersji z jednym argumentem – warunkiem logicznym – otrzymam indeksy elementów spełniających dany warunek.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
indices = np.where(arr > 25)
print(indices) # (array([2, 3, 4]),)
Funkcja zwróciła krotkę z tablicą indeksów elementów większych od 25.
Podstawowe zastosowanie – zamiana wartości
Gdy podam dodatkowo wartości x i y, mogę dynamicznie podmieniać elementy tablicy.
arr = np.array([10, 20, 30, 40, 50])
modified_arr = np.where(arr > 25, 1, 0)
print(modified_arr) # [0 0 1 1 1]
W tym przykładzie liczby większe niż 25 zostały zastąpione jedynkami, a reszta zerami.
Zastosowanie w macierzach wielowymiarowych
numpy.where() działa również na macierzach wielowymiarowych.
matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
indices = np.where(matrix > 4)
print(indices)
Wynik to dwie tablice z indeksami wierszy i kolumn:
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
Oznacza to, że elementy spełniające warunek znajdują się na pozycjach (1,1), (1,2), (2,0), (2,1) i (2,2).
Warunki bardziej złożone
Mogę tworzyć bardziej skomplikowane warunki, łącząc operatory logiczne.
arr = np.array([10, 20, 30, 40, 50])
modified_arr = np.where((arr > 15) & (arr < 45), arr, -1)
print(modified_arr) # [-1 20 30 40 -1]
Tutaj zamieniłem wartości spoza zakresu (15,45) na -1.
Porównanie numpy.where() z list comprehensions
Wiele osób zastanawia się, dlaczego warto używać numpy.where() zamiast standardowego zapisu w Pythonie. Spójrzmy na porównanie:
| Metoda | Przykład | Wydajność |
|---|---|---|
| List comprehension |
|
Wolniejsze |
| numpy.where() |
|
Szybsze |
Operacje na tablicach NumPy są optymalizowane w C, dzięki czemu numpy.where() działa znacznie szybciej.
Podsumowanie
Funkcja numpy.where() to potężne narzędzie do analizy i modyfikacji danych w tablicach NumPy. Pozwala na:
- Znajdowanie indeksów spełniających dany warunek.
- Warunkową zamianę wartości.
- Efektywne operacje na dużych tablicach.
- Obsługę macierzy wielowymiarowych.
Zastosowanie numpy.where() w praktyce znacząco poprawia wydajność kodu i jest nieocenione przy przetwarzaniu dużych zbiorów danych.
Inny ciekawy artykuł:
Jak działa numpy vsplit 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.

