In diesem Artikel erfahren Sie, wie Sie Zeilen aus einem NumPy-Array basierend auf mehreren Bedingungen entfernen. Um unsere Aufgabe zu erledigen, benötigen wir einige eingebaute Methoden, die vom NumPy-Modul bereitgestellt werden, die wie folgt lauten:

  • np.delete(ndarray, index, axis): Löscht Elemente von Zeilen oder Spalten aus dem NumPy-Array basierend auf den angegebenen Indexbedingungen und der angegebenen Achse, der Parameter ndarray ist das Array, auf dem die Manipulation stattfinden wird, der Index basiert auf den jeweiligen Zeilen bei zu löschenden Bedingungen, Achse=0 zum Entfernen von Zeilen in unserem Fall.
  • np.where(conditions): Arbeiten Sie mit Array-Elementen in Abhängigkeit von Bedingungen in Zeilen oder Spalten, abhängig von der angegebenen Achse.

Hinweis: Bei zweidimensionalen NumPy-Arrays werden Zeilen entfernt, wenn Achse=0, und Spalten werden entfernt, wenn Achse=1. Aber hier beabsichtigen wir, Zeilen zu entfernen, also behalten wir Achse = 0 bei.

Nehmen wir das NumPy-Array-Beispiel. Hier haben wir ein NumPy-Array mit Elementen von 0 bis 40 genommen und das Array in 8 Zeilen und 5 Spalten umgeformt.

Python3

import numpy as np
 
nparray = np.arange(40).reshape((8, 5))
print("Given numpy array:\n", nparray)

Ausgabe:

Beispiel 1: Entfernen Sie Zeilen mit Elementen zwischen 5 und 20 aus dem NumPy-Array

Hier np.where((nparray >= 5) & (nparray <= 20))[0], axis=0) bedeutet, dass die Zeilen gelöscht werden, in denen mindestens ein oder mehrere Elemente größer oder gleich sind 5 und kleiner oder gleich 20. Die 2., 3., 4. und 5. Reihe haben also Elemente gemäß den angegebenen Bedingungen, sodass sie gelöscht oder entfernt werden.

Python3

nparray = np.delete(nparray, np.where(
    (nparray >= 5) & (nparray <= 20))[0], axis=0)
 
print("After deletion of rows containing
      numbers between 5 and 20: \n", nparray)

 Ausgabe:

Beispiel 2: Entfernen Sie Zeilen, deren erstes Element größer als 25 und kleiner als 35 ist, aus dem NumPy-Array

Hier (np.where(nparray[:, 0] >= 25) & (nparray[:, 0] <= 35))[0], axis=0)bedeutet, dass die Zeilen gelöscht werden, in denen mindestens eine vorhanden ist oder mehr Elemente, deren erstes Element größer oder gleich 25 und kleiner als 35 ist. nparray[:, 0], um auf das erste Element jeder Zeile zu zeigen. Die 6., 7., 8. Reihe hat also Elemente gemäß den angegebenen Bedingungen, sodass sie gelöscht oder entfernt werden.

Python3

nparray = np.delete(nparray, np.where(
    (nparray[:, 0] >= 25) & (nparray[:, 0] <= 35))[0], axis=0)
 
print("After deletion of rows whose first element \
is between 25 and 35:\n", nparray)

Ausgabe:

Beispiel 3: Entfernen Sie Zeilen, deren drittes Element durch 2 teilbar ist, 5. und 4. Elemente sind durch 3 teilbar

Hier np.where((nparray[:, 2] % 2 == 0) | (nparray[:, 4] % 3 == 0)| (nparray[:, 3] % 3 == 0))[0] , Achse=0) bedeutet, dass die Zeilen gelöscht werden, in denen es mindestens ein oder mehrere Elemente gibt, deren Elemente in der 3. Spalte durch 3 teilbar sind, oder Zeilen, in denen es mindestens ein oder mehrere Elemente gibt, deren Elemente in der 5. und 4. Spalte vorhanden sind (s) sind teilbar durch 3 Achse = 0, um die Zeilen zu entfernen. Die nparray[:, 2], nparray[:, 4], nparray[:, 3] zeigen jeweils auf das dritte, 5. und 4. Element jeder Zeile. Die 6., 7., 8. Reihe hat also Elemente gemäß den angegebenen Bedingungen, sodass sie gelöscht oder entfernt werden.

Python3

nparray = np.delete(nparray, np.where((nparray[:, 2] % 2 == 0) | (
    nparray[:, 4] % 3 == 0) | (nparray[:, 3] % 3 == 0))[0], axis=0)
 
print("After removing required rows :\n", nparray)

Ausgabe: