Home » python » NumPy Array Filter

NumPy Array Filter

by Catur Kurnia Sari
by Catur Kurnia Sari

Mengambil beberapa elemen dari array yang ada dan membuat array baru disebut pemfilteran.

Di NumPy, kita dapat memfilter array menggunakan daftar indeks boolean.

Daftar indeks boolean adalah daftar boolean yang sesuai dengan indeks dalam array.

Jika nilai pada indeks adalah True maka elemen tersebut terdapat dalam array yang difilter, jika nilai pada indeks tersebut adalah False maka elemen tersebut dikecualikan dari array yang difilter.

Contoh:
Buat array dari elemen pada indeks 0 dan 2

import numpy as np

arr = np.array([41, 42, 43, 44])

x = arr[[True, False, True, False]]

print(x)

Contoh di atas akan menghasilkan [41, 43], mengapa?

Karena filter baru hanya berisi nilai di mana array filter memiliki nilai True, dalam indeks 0 dan 2.

Membuat Array Filter

Dalam contoh di atas, kita melakukan hard-code untuk nilai True dan False, tetapi penggunaan yang umum adalah membuat array filter berdasarkan kondisi.

Contoh:
Buat array filter yang hanya mengembalikan nilai lebih dari 42

import numpy as np

arr = np.array([41, 42, 43, 44])

# Buat daftar kosong
filter_arr = []

# melalui setiap elemen di arr
for element in arr:
   # jika elemen lebih tinggi dari 42, setel nilainya ke True, jika tidak False:
  if element > 42:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Contoh:
Buat array filter yang hanya akan mengembalikan elemen genap dari array asli

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

# Buat daftar kosong
filter_arr = []

# melalui setiap elemen di arr
for element in arr:
   # jika elemen habis dibagi 2, setel nilainya ke True, jika tidak False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Membuat Filter Langsung Dari Array

Contoh di atas adalah tugas yang cukup umum di NumPy dan NumPy menyediakan cara yang bagus untuk mengatasinya.

Kita bisa langsung mengganti array pada variabel iterable dalam kondisi kita dan akan bekerja seperti yang kita harapkan.

Contoh:
Buat array filter yang hanya akan mengembalikan nilai yang lebih tinggi dari 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)

Contoh
Buat array filter yang hanya akan mengembalikan elemen genap dari array asli

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)

You may also like