Tablica filtrów NumPy
Filtrowanie tablic
Uzyskiwanie niektórych elementów z istniejącej tablicy i tworzenie z nich nowej tablicy nazywa się filtrowaniem .
W NumPy filtrujesz tablicę za pomocą listy indeksów logicznych .
Lista indeksów logicznych to lista logicznych odpowiadających indeksom w tablicy.
Jeśli wartość pod indeksem oznacza True
, że element jest zawarty w filtrowanej tablicy, jeśli wartość pod tym indeksem oznacza
False
, że element jest wykluczony z filtrowanej tablicy.
Przykład
Utwórz tablicę z elementów o indeksie 0 i 2:
import numpy as np
arr = np.array([41, 42, 43, 44])
x = [True,
False, True, False]
newarr = arr[x]
print(newarr)
Powyższy przykład zwróci [41, 43]
, dlaczego?
Ponieważ nowy filtr zawiera tylko wartości, dla których tablica filtrów miała wartość
True
, w tym przypadku indeks 0 i 2.
Tworzenie tablicy filtrów
W powyższym przykładzie zakodowaliśmy wartości True
i na False
stałe, ale powszechnym zastosowaniem jest tworzenie tablicy filtrów na podstawie warunków.
Przykład
Utwórz tablicę filtrów, która zwróci tylko wartości większe niż 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
#
Create an empty list
filter_arr = []
# go through each element in
arr
for element in arr:
# if the element is higher than 42, set
the value to True, otherwise False:
if element > 42:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Przykład
Utwórz tablicę filtrów, która zwróci tylko parzyste elementy z oryginalnej tablicy:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
#
Create an empty list
filter_arr = []
# go through each element in
arr
for element in arr:
# if the element is completely divisble
by 2, set the value to True, otherwise False
if element % 2 == 0:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Tworzenie filtra bezpośrednio z tablicy
Powyższy przykład jest dość powszechnym zadaniem w NumPy, a NumPy zapewnia dobry sposób na jego rozwiązanie.
Możemy bezpośrednio podstawić tablicę zamiast zmiennej iterowalnej w naszym warunku i będzie działać tak, jak tego oczekujemy.
Przykład
Utwórz tablicę filtrów, która zwróci tylko wartości większe niż 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
filter_arr = arr
> 42
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Przykład
Utwórz tablicę filtrów, która zwróci tylko parzyste elementy z oryginalnej tablicy:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr
% 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)