
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.
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.