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 True
dieses Element im gefilterten Array enthalten, wenn der Wert an diesem Index ist
, wird False
dieses 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 False
hartcodiert, 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)