Numpy básico: eliminar elementos en arrays de Numpy

Publicado el 30 octubre 2019 por Daniel Rodríguez @analyticslane

Para eliminar eliminar elementos en arrays de Numpy se puede utilizar la función de la librería np.delete(). Esta función permite eliminar tanto valores como filas o columnas utilizando la posición del elemento a eliminar. Lo que la convierte en una función realmente interesante.

np.delete() de Numpy

La función np.delete() es realmente sencilla ya que solamente necesita dos parámetros para hacer su trabajo. La forma genérica de utilizarla es:

np.delete(arr, obj, axis=None)

donde

  • arr: es el array de Numpy con el que se desea trabajar.
  • obj: es la posición de índice o una lista de posiciones que se desean eliminar del array de Numpy.
  • axis: valor opcional que indica eje a lo largo del cual se desean eliminar los registros. En caso de que sea 1, eliminará por columnas, si es 0, eliminará por filas y, si no valor, eliminará los valores ordenados de la matriz.

El método devuelve una copia del array de Numpy eliminando los registros que se encuentran en la posición o posiciones indicadas.

Eliminar los elementos de un vector

El ejemplo más básico de uso de np.delete() es eliminar un registro de un vector. Para ello simplemente se pasa el vector a la función seguido de la posición del elemento a eliminar. Proceso que se muestra en el siguiente ejemplo.

import numpy as np

arr = np.array([1,2,3,4,5])

np.delete(arr, 1)
array([1, 3, 4, 5])

En donde se ha elimina el segundo registro, ya que en Python los registros empiezan a contar en cero. Si se desea eliminar más de un registro simplemente se pasa una tupla con las posiciones a eliminar

np.delete(arr, (1, 3))
array([1, 3, 5])

En este segundo caso se puede ver como se han eliminado el segundo y cuarto registro del vector.

Eliminar las filas o columnas de una matriz

A la hora de trabajar con matrices la forma de trabajar es idéntica a la utilizada en los vectores. Antes de probar la función, en primer lugar es necesario crear una nueva matriz con la que trabajar.

mat = np.array([[11,12,13], [21,22,23], [31,32,33]])
mat
array([[11, 12, 13],
       [21, 22, 23],
       [31, 32, 33]])

En este ejemplo la matriz es de 3×3 siendo la primera fila decenas, la segunda veintenas y la tercera treintenas. Lo que permite identificar fácilmente los valores. Ahora se pude eliminar una fila o columna. Si lo que se desea es eliminar una fila es necesario indicar a np.delete() que trabaje sobre el eje 0. Por otro lado, si lo que se desea es eliminar una columna se tiene que utilizar el eje. Esto es lo que se muestra en los siguientes ejemplos.

np.delete(mat, 1, axis=0)
array([[11, 12, 13],
       [31, 32, 33]])
np.delete(mat, 1, axis=1)
array([[11, 13],
       [21, 23],
       [31, 33]])

Al igual que en el caso anterior se puede eliminar más de una columna o fila en la misma instrucción.

np.delete(mat, (0,2), axis=1)
array([[12],
       [22],
       [32]])

Un ejemplo en donde se ha eliminado la primera y tercera columna de la matriz.

Eliminar los valores de una matriz

Si no se indica el eje de la matriz, la función np.delete() convertirá la matriz en un vector y eliminará el registro o registros de esta. Es necesario recordar esto, ya que lo más habitual es eliminar filas o columnas, y siempre es necesario indicar la dimensión.

np.delete(mat, 5)
rray([11, 12, 13, 21, 22, 31, 32, 33])

Conclusiones

En esta entrada se ha visto una función con la que eliminar elementos en arrays de Numpy, pudiéndose utilizar tanto sobre vectores como matrices. La función np.delete() facilita el trabajo y permite simplificar muchas tareas.

Imágenes: Pixabay (Marit Welker)