Filtrowanie tablic w NumPy

Polecenia rekomendowane:

Filtrowanie tablicy

W NumPy używamy listy indeksów booleana do filtrowania tablic.

lista indeksów booleana to lista wartości booleana odpowiadających indeksom w tablicy.

jeśli wartość na indeksie jest True, element ten będzie zawarty w wyfiltrowanej tablicy; jeśli wartość na indeksie jest False, element ten zostanie wykluczony z wyfiltrowanej tablicy.

Przykład

tworzenie tablicy z elementów na indeksach 0 i 2, 4:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

Uruchom przykład

W przykładzie powyższym zwróci się [61, 63, 65]dlaczego?

ponieważ nowy filtr zawiera tylko wartości z tablicy filtrów True , więc w tym przypadku, indeksy to 0 i 2, 4.

tworzenie tablicy filtrów

W przykładzie poniżej, tworzymy wartość True i False Wartość jest zaimplementowana w sposób sztywny, ale zwykle jest używana do tworzenia tablicy filtrów na podstawie warunków.

Przykład

Utwórz filtrujący ciąg liczb, który zwraca tylko wartości większe niż 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Utwórz pustą listę
filter_arr = []
# Przejdź przez każdy element w arr
for element in arr:
  # Jeśli element jest większy niż 62, wartość ustawiana jest na True, w przeciwnym razie na False:
  jeśli element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Uruchom przykład

Przykład

Utwórz filtrujący ciąg liczb, który zwraca tylko parzyste elementy oryginalnego ciągu liczb:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Utwórz pustą listę
filter_arr = []
# Przejdź przez każdy element w arr
for element in arr:
  # Jeśli element można podzielić przez 2 bez reszty, ustaw wartość na True, w przeciwnym razie ustaw na False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Uruchom przykład

Tworzenie filtra bezpośrednio z tablicy

Przykład ten jest bardzo powszechnym zadaniem w NumPy, które NumPy rozwiązuje w sposób, który jest dobrym rozwiązaniem.

Możemy bezpośrednio zastąpić tablicę w warunku zamiast zmiennej iterable, co będzie działać tak, jak oczekujemy.

Przykład

Utwórz filtrujący ciąg liczb, który zwraca tylko wartości większe niż 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Uruchom przykład

Przykład

Utwórz filtrujący ciąg liczb, który zwraca tylko parzyste elementy oryginalnego ciągu liczb:

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)

Uruchom przykład