Cómo eliminar elementos específicos en una matriz numpy
¿Cómo puedo eliminar algunos elementos específicos de una matriz numerosa? decir que tengo
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9])
Entonces quiero eliminar 3,4,7
de a
. Todo lo que sé es el índice de los valores ( index=[2,3,6]
).
Use numpy.delete()
, que devuelve una nueva matriz con submatrices a lo largo de un eje eliminado.
numpy.delete(a, index)
Para su pregunta específica:
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
index = [2, 3, 6]
new_a = np.delete(a, index)
print(new_a)
# Output: [1, 2, 5, 6, 8, 9]
Tenga en cuenta que numpy.delete()
devuelve una nueva matriz, ya que los escalares de la matriz son inmutables, similares a las cadenas en Python, por lo que cada vez que se realiza un cambio, se crea un nuevo objeto. Es decir, para citar los delete()
documentos :
"Una copia de arr con los elementos especificados por obj eliminados. Tenga en cuenta que la eliminación no se produce en el lugar ..."
Si el código que publico tiene salida, es el resultado de ejecutar el código.
Usar np.setdiff1d
:
import numpy as np
>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = np.array([3,4,7])
>>> c = np.setdiff1d(a,b)
>>> c
array([1, 2, 5, 6, 8, 9])
Una matriz Numpy es inmutable , lo que significa que técnicamente no se puede eliminar un elemento de ella. Sin embargo, puedes construir una nueva matriz sin los valores que no deseas, así:
b = np.delete(a, [2,3,6])
Para eliminar por valor:
modified_array = np.delete(original_array, np.where(original_array == value_to_delete))