HOWTO · NumPy

Eliminar fila en NumPy

La función numpy.delete() se puede usar para eliminar una fila de un array NumPy multidimensional en Python.

En esta página

Los arrays de NumPy no tienen una operación para eliminar filas que cambie su tamaño en el mismo lugar. Para crear un array sin las filas seleccionadas, usa numpy.delete() con el eje de las filas o una máscara booleana para conservar las filas que cumplan una condición. Los índices del array empiezan en 0, así que el índice 1 corresponde a la segunda fila.

Eliminar una fila por índice con numpy.delete()

Pasa el array, el índice de la fila y axis=0 a numpy.delete(). El eje 0 selecciona filas; en un array bidimensional, el eje 1 seleccionaría columnas. Este ejemplo elimina la segunda fila:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
without_second = np.delete(array, 1, axis=0)
print(without_second)

El array devuelto contiene la primera y la tercera fila. numpy.delete() crea un array nuevo y deja array sin cambios. Usa el valor devuelto en los cálculos posteriores; asignarlo a una variable nueva, como en el ejemplo, permite conservar el original.

Eliminar varias filas por índice

Para eliminar varias filas conocidas en una sola llamada, pasa sus índices como una secuencia. Los índices siguen haciendo referencia al array original, así que eliminar el índice 1 no cambia el significado del índice 3 en esa misma llamada. En este ejemplo se seleccionan para eliminar la segunda y la cuarta fila:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
without_selected = np.delete(array, [1, 3], axis=0)
print(without_selected)

Las filas restantes son las que estaban originalmente en los índices 0 y 2. Si los valores de los datos determinan qué filas hay que eliminar, suele ser más claro usar una máscara booleana que recopilar primero sus índices.

Eliminar las filas que cumplen una condición

Una máscara booleana permite seleccionar qué filas conservar. En un array bidimensional, array[:, 0] selecciona la primera columna; al compararla con 5, se obtiene un valor booleano por cada fila. El siguiente ejemplo conserva las filas cuyo valor en la primera columna es mayor que 5:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
keep = array[:, 0] > 5
filtered = array[keep]
print(filtered)

Este método filtra el array conservando las filas que cumplen la condición, en lugar de eliminarlas con numpy.delete(). Para quitar las filas que cumplen una condición, invierte la máscara con ~, como en array[~keep]. Elige la comparación según la columna y la regla que se apliquen a tus datos.

Entender los ejes, los índices y el array devuelto

En un array bidimensional, axis=0 representa las filas y axis=1, las columnas. En numpy.delete(array, index, axis=0), index es una posición basada en cero en el eje de las filas: 0 es la primera fila, 1 la segunda, y así sucesivamente. Si omites axis, el array se aplana antes de eliminar elementos, por lo que no se elimina una fila completa de un array bidimensional.

La operación devuelve un array nuevo en lugar de cambiar el tamaño del original. Conserva el resultado asignándolo a una variable o úsalo directamente en una expresión posterior. Un índice que queda fuera del eje seleccionado está fuera de rango y NumPy genera un IndexError. Si no tienes claro qué filas selecciona una condición, inspecciona la máscara booleana o imprime las filas seleccionadas antes de usar el resultado en un cálculo mayor.