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, Trueo öğe filtrelenmiş dizide yer alıyorsa, o dizindeki değer Falseo öğ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 Falsedeğ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)