NumPy- Filter-Array


Filtern von Arrays

Das Herausholen einiger Elemente aus einem vorhandenen Array und das Erstellen eines neuen Arrays daraus wird Filtern genannt .

In NumPy filtern Sie ein Array mithilfe einer booleschen Indexliste .

Eine boolesche Indexliste ist eine Liste von booleschen Werten, die Indizes im Array entsprechen.

Wenn der Wert an einem Index ist , ist Truedieses Element im gefilterten Array enthalten, wenn der Wert an diesem Index ist , wird Falsedieses Element aus dem gefilterten Array ausgeschlossen.

Beispiel

Erstellen Sie ein Array aus den Elementen auf Index 0 und 2:

import numpy as np

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

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

Das obige Beispiel gibt zurück [41, 43], warum?

Denn der neue Filter enthält nur die Werte, bei denen das Filterarray den Wert hatte True, in diesem Fall Index 0 und 2.


Erstellen des Filterarrays

Im obigen Beispiel haben wir die Werte True und Falsehartcodiert, aber die übliche Verwendung besteht darin, ein Filterarray basierend auf Bedingungen zu erstellen.

Beispiel

Erstellen Sie ein Filterarray, das nur Werte über 42 zurückgibt:

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)


Beispiel

Erstellen Sie ein Filterarray, das nur gerade Elemente aus dem ursprünglichen Array zurückgibt:

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)

Filter direkt aus Array erstellen

Das obige Beispiel ist eine ziemlich häufige Aufgabe in NumPy, und NumPy bietet eine gute Möglichkeit, sie anzugehen.

Wir können das Array direkt anstelle der iterierbaren Variablen in unserer Bedingung ersetzen und es funktioniert genau so, wie wir es erwarten.

Beispiel

Erstellen Sie ein Filterarray, das nur Werte über 42 zurückgibt:

import numpy as np

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

filter_arr = arr > 42

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Beispiel

Erstellen Sie ein Filterarray, das nur gerade Elemente aus dem ursprünglichen Array zurückgibt:

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)