Elemente aus einem Array in NumPy entfernen
-
Elemente mit der Funktion
numpy.delete()
entfernen -
Elemente mit der Funktion
numpy.setdiff1d()
entfernen
In diesem Artikel erfahren Sie, wie Sie Elemente aus einem NumPy-Array auf zwei Arten entfernen können.
Elemente mit der Funktion numpy.delete()
entfernen
Beziehen Sie sich auf den folgenden Code.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Ausgabe:
[ 1 2 3 5 7 9 10]
Im obigen Code verwenden wir die Funktion delete()
der Bibliothek NumPy
. Die Funktion delete()
akzeptiert drei Parameter, nämlich arr
, obj
und axis
, und gibt ein NumPy-Array aus. Das arr
ist das NumPy-Array, aus dem wir Elemente löschen möchten. obj
ist eine Liste von Ganzzahlen. Diese Zahlen stellen die Indizes der Elemente dar, die aus dem Array gelöscht werden sollen. Schließlich ist die axis
ein optionales Argument. axis
bezieht sich auf die Achse, entlang der die vom obj
anvisierten Elemente gelöscht werden sollen. Wenn diesem Parameter der Wert None
zugewiesen wird, wird arr
abgeflacht und das Löschen für dieses abgeflachte Array ausgeführt.
Wenn für diese Methode ein Index bereitgestellt wird, der außerhalb des Bereichs von arr
liegt, wird wie üblich eine IndexError
-Ausnahme ausgelöst.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Ausgabe:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
Weitere Informationen zu dieser Funktion finden Sie in der offizielle Dokumentation dieser Funktion hier.
Hier sind zwei weitere Beispiele zum Löschen in einem mehrdimensionalen NumPy-Array.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
Ausgabe:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
Verwenden Sie None
als Wert für den Parameter axis
.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
Ausgabe:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
Elemente mit der Funktion numpy.setdiff1d()
entfernen
Dieses Mal verwenden wir die Funktion setdiff1d()
von NumPy
. Diese Funktion akzeptiert drei Parameter: ar1
, ar2
und accept_unique
. ar1
und ar2
sind zwei NumPy-Arrays. Und assume_unique
ist ein optionales boolesches Argument. Der Standardwert ist False
. Wenn es True
ist, wird angenommen, dass die beiden Eingabearrays eindeutig sind, und diese Annahme kann die Berechnungszeit beschleunigen.
setdiff1d() gibt die eindeutigen Werte in ar1 zurück, die nicht in ar2 enthalten sind.
Beziehen Sie sich auf den folgenden Code.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
Ausgabe:
[ 1 2 4 6 8 9 10]
Im Gegensatz zu numpy.delete()
sind beide Arrays NumPy-Arrays mit tatsächlichen Elementen, jedoch keine Indizes.
Weitere Informationen zu dieser Funktion finden Sie in der offizielle Dokumentation dieser Funktion hier.