Cómo eliminar elementos específicos en una matriz numpy

Resuelto Daniel Thaagaard Andreasen asked hace 12 años • 13 respuestas

¿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,7de a. Todo lo que sé es el índice de los valores ( index=[2,3,6]).

Aceptado

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.

Levon avatar Jun 12 '2012 11:06 Levon

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])
Zong avatar Apr 06 '2016 19:04 Zong

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])
Digitalex avatar Jun 12 '2012 12:06 Digitalex

Para eliminar por valor:

modified_array = np.delete(original_array, np.where(original_array == value_to_delete))
Prakhar Pandey avatar Apr 26 '2019 09:04 Prakhar Pandey