Eliminar elementos del array en NumPy
-
Eliminar elementos usando la función
numpy.delete()
-
Eliminar elementos usando la función
numpy.setdiff1d()
En este artículo, aprenderemos sobre dos formas de eliminar elementos de un array NumPy.
Eliminar elementos usando la función numpy.delete()
Consulte el siguiente código.
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)
Producción :
[ 1 2 3 5 7 9 10]
En el código anterior, usamos la función delete()
de la biblioteca NumPy
. La función delete()
acepta tres parámetros, a saber, arr
, obj
y axis
y genera un array NumPy. El arr
es el array NumPy de la que deseamos eliminar elementos. obj
es una lista de números enteros. Estos números representan los índices de los elementos que deben eliminarse del array. Por último, el axis
es un argumento opcional. axis
se refiere al eje a lo largo del cual los elementos seleccionados por el obj
deben eliminarse. Si se asigna un valor None
a este parámetro, arr
se aplana y se lleva a cabo la eliminación en esta matriz aplanada.
Como es habitual, si se proporciona un índice que se encuentra fuera del rango de arr
a este método, lanza una excepción IndexError
.
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)
Producción :
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
Para obtener más información sobre esta función, consulte la documentación oficial de esta función aquí
Aquí hay dos ejemplos más de eliminación en un array NumPy multidimensional.
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)
Producción :
[[ 1 4 5]
[11 14 15]
[21 24 25]]
Utilice None
como valor para el parámetro 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)
Producción :
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
Eliminar elementos usando la función numpy.setdiff1d()
Esta vez usaremos la función setdiff1d()
de NumPy
. Esta función acepta tres parámetros, ar1
, ar2
y asume_unique
. ar1
y ar2
son dos matrices NumPy. Y asume_unique
es un argumento booleano opcional. Su valor predeterminado es False
. Cuando es True
, se supone que las dos matrices de entrada son únicas, y esta suposición puede acelerar el tiempo de cálculo.
setdiff1d()
devuelve los valores únicos en ar1
que no están en ar2
.
Consulte el siguiente código.
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)
Producción :
[ 1 2 4 6 8 9 10]
A diferencia de numpy.delete()
, ambas matrices son matrices NumPy con elementos reales en ellas pero no índices.
Para obtener más información sobre esta función, consulte la documentación oficial de esta función aquí.