NumPy-Array-Filterung

Array-Filterung

Einige Elemente aus einem bestehenden Array取出 und ein neues Array daraus erstellen wird als Filtern (Filtering) bezeichnet.

In NumPy verwenden wir Boolean-Index-Listen, um Arrays zu filtern.

Boolean-Index-Listen sind Listen mit booleschen Werten, die den Indizes im Array entsprechen.

Wenn der Wert an der Index-Stelle True, wird dieses Element im gefilterten Array enthalten; wenn der Wert an der Index-Stelle False, wird dieses Element aus dem gefilterten Array ausgeschlossen.

Beispiel

Ein Array aus den Elementen an den Indizes 0 und 2, 4 zu erstellen:

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

Laufende Beispiel

Das obige Beispiel wird [61, 63, 65]Warum?

Da der neue Filter nur die Werte der Filterarray enthält True Werte, daher sind in diesem Fall die Indizes 0 und 2, 4.

Filterarrays erstellen

Im obigen Beispiel haben wir True und False Der Wert ist fest codiert, aber der häufige Gebrauch besteht darin, Filterarrays basierend auf Bedingungen zu erstellen.

Beispiel

Erstellen Sie ein Filterarray, das nur Werte zurückgibt, die größer als 62 sind:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Erstellen Sie eine leere Liste
filter_arr = []
# Durchsuchen Sie jedes Element im arr
for element in arr:
  # Wenn das Element größer als 62 ist, wird der Wert auf True gesetzt, andernfalls auf False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Laufende Beispiel

Beispiel

Erstellen Sie einen Filterarray, der nur die geraden Elemente des ursprünglichen Arrays zurückgibt:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Erstellen Sie eine leere Liste
filter_arr = []
# Durchsuchen Sie jedes Element im arr
for element in arr:
  # Wenn das Element durch 2 teilbar ist, wird der Wert auf True gesetzt, sonst auf False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Laufende Beispiel

Filter direkt aus dem Array erstellen

Der obige Fall ist eine sehr häufige Aufgabe in NumPy, und NumPy bietet eine gute Methode zur Lösung dieses Problems.

Wir können das Array direkt in der Bedingung ersetzen, anstatt des iterable Variablen, und es wird wie erwartet funktionieren.

Beispiel

Erstellen Sie ein Filterarray, das nur Werte zurückgibt, die größer als 62 sind:

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)

Laufende Beispiel

Beispiel

Erstellen Sie einen Filterarray, der nur die geraden Elemente des ursprünglichen Arrays 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)

Laufende Beispiel