NumPy Dizi Filtreleme

Dizi Filtreleme

Mevcut diziden bazı elementler çıkarmak ve bunlardan yeni bir dizi oluşturmak, filtreleme (filtering) olarak adlandırılır.

NumPy'de, boole indeks listeleri ile dizileri filtrelemek için kullanırız.

Boole indeks listesi, dizideki indekslerle uyumlu olan Boole değer listesidir.

eğer indeksdeki değer Trueise bu element, filtrelenmiş dizide yer alacaktır; eğer indeksdeki değer Falseise bu element, filtrelenmiş diziden çıkarılacaktır.

Örnek

0 ve 2, 4 indekslerindeki elementlerle bir dizi oluşturmak için kullanılır:

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

Örnek Çalıştır

Örnek, [61, 63, 65]Neden mi?

Çünkü yeni filtre, sadece filtre dizisinin değerleri olanları içerir True değerinin, bu durumda, 0 ve 2, 4 indekslerinde olduğunu oluşturduk.

filtre dizisi oluşturma

Örnekte, True ve False Değer sabit olarak kodlanmıştır, ancak genellikle filtre dizisi oluşturmak için koşullara göre kullanılır.

Örnek

Sadece 62'den büyük değerleri döndüren bir filtre arrayi oluşturun:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Boş bir liste oluşturma
filter_arr = []
# arr'deki her elementi dolaş
for element in arr:
  # Eğer element 62'den büyükse, değeri True olarak ayarlayın, aksi takdirde False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Örnek Çalıştır

Örnek

Bir filtre arrayi oluşturun, bu array sadece başlangıç arrayindeki çift değerleri döndürür:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Boş bir liste oluşturma
filter_arr = []
# arr'deki her elementi dolaş
for element in arr:
  # Eleman 2'ye tam bölünüyorsa True değerini ayarlayın, aksi takdirde False ayarlayın
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Örnek Çalıştır

Doğrudan Arrayden Filtre Oluşturma

Bu örnek NumPy'de çok yaygın bir görevdir ve NumPy bu sorunu çözmek için iyi bir yöntem sunar.

Koşulda doğrudan arrayi iterable değişken yerine değiştirebiliriz, bu da beklediğimiz gibi çalışır.

Örnek

Sadece 62'den büyük değerleri döndüren bir filtre arrayi oluşturun:

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)

Örnek Çalıştır

Örnek

Bir filtre arrayi oluşturun, bu array sadece başlangıç arrayindeki çift değerleri döndürür:

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)

Örnek Çalıştır