NumPy Filtre Dizisi
Dizileri Filtreleme
Mevcut bir diziden bazı elemanları alıp onlardan yeni bir dizi oluşturmaya filtreleme denir .
NumPy'de, bir boole indeks listesi kullanarak bir diziyi filtrelersiniz .
Boole dizin listesi , dizideki dizinlere karşılık gelen bir boole listesidir.
Bir dizindeki değer, True
o öğe filtrelenmiş dizide yer alıyorsa, o dizindeki değer
False
o öğeyse, filtre uygulanmış diziden hariç tutulur.
Örnek
0 ve 2 dizinindeki öğelerden bir dizi oluşturun:
import numpy as np
arr = np.array([41, 42, 43, 44])
x = [True,
False, True, False]
newarr = arr[x]
print(newarr)
Yukarıdaki örnek dönecek [41, 43]
, neden?
Yeni filtre yalnızca filtre dizisinin değerine sahip olduğu değerleri içerdiğinden
True
, bu durumda dizin 0 ve 2'dir.
Filtre Dizisini Oluşturma
Yukarıdaki örnekte True
ve False
değerlerini sabit kodladık, ancak yaygın kullanım, koşullara dayalı bir filtre dizisi oluşturmaktır.
Örnek
Yalnızca 42'den yüksek değerleri döndürecek bir filtre dizisi oluşturun:
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)
Örnek
Orijinal diziden yalnızca eşit öğeleri döndürecek bir filtre dizisi oluşturun:
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)
Doğrudan Diziden Filtre Oluşturma
Yukarıdaki örnek, NumPy'de oldukça yaygın bir görevdir ve NumPy, bununla başa çıkmak için güzel bir yol sağlar.
Koşulumuzdaki yinelenebilir değişken yerine doğrudan diziyi değiştirebiliriz ve beklediğimiz gibi çalışacaktır.
Örnek
Yalnızca 42'den yüksek değerleri döndürecek bir filtre dizisi oluşturun:
import numpy as np
arr = np.array([41, 42, 43, 44])
filter_arr = arr
> 42
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Örnek
Orijinal diziden yalnızca eşit öğeleri döndürecek bir filtre dizisi oluşturun:
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)