Numpy básico: como añadir elementos en arrays de Numpy con np.append()

Publicado el 27 noviembre 2019 por Daniel Rodríguez @analyticslane

np.append() es uno de los métodos básicos de Numpy, con el que es posible agregar nuevos elementos al final de los arrays de Numpy. A pesar de se un método básico tiene múltiples opciones y usos que es importante conocer. En esta entrada se va a ver como añadir elementos en arrays de Numpy con np.append().

El método np.append()

El método que ofrece el módulo Numpy de Python para agregar elementos al final de un array es np.append(). Un método que tiene la siguiente forma:

np.append(arr, values, axis=None)

en donde

  • arr: es un array de Numpy.
  • values: son los valores que se agregan al final del array que se pasa en el parámetro anterior. Este elemento puede ser también un array de Numpy.
  • axis: es el eje opcional en el que se agregan los valores.

Es importante saber que el método no modifica el array original, sino que crea una copia a la que le agrega los nuevos valores.

Por otro lado, sin no se indica un valor para axis y arr es un matriz el objeto se aplanará antes de agregar los nuevos elementos. Siendo las posibles opciones de este parámetro:

  • 0: los valores se agregarán en el eje 0, es decir, se agregará nuevas filas.
  • 1: los valores se agregarán en el eje 1, es decir, se agregará nuevas columnas.

Agregar elementos al final de arrays de Numpy

El modo básico de utilizar np.append() es simplemente agregar un elemento al final de un array. Un elemento que puede ser un escalar

import numpy as np

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

O también se puede agregar otro array.

np.append(arr, [11, 12])
array([ 1,  2,  3,  4,  5, 11, 12])

En este último ejemplo se puede observar como el vector original no se modificó, ya que no aparece el elemento 10 en el segundo caso.

Agregar elementos en matrices

Además de con arrays el método np.append() también se puede emplear en matrices. Como se ha comentado anteriormente es necesario indicar mediante la propiedad axis si los nuevos elementos se agregan por filas o columnas. En el caso de que no se indique el parámetro la matriz de aplanara antes de agregar los elementos, obteniéndose como resultado un array. Esto es lo que se puede ver en el siguiente ejemplo:

mat = np.array([[1, 2, 3],[4, 5, 6]])
np.append(mat, [11, 12])
array([ 1,  2,  3,  4,  5,  6, 11, 12])

Si se quiere agregar una nueva fila el segundo elemento tiene que ser una matriz con el mismo número de columnas que la original. Además, es necesario asignar el valor 0 al parámetro axis.

np.append(mat, [[11, 12, 13]], axis=0)
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [11, 12, 13]])

Por otro lado, para agregar una nueva columna el método funciona exactamente igual. Los valores que se agregan tienen que venir en una matriz con el mismo número de filas que la original y se tiene que asignar el valor 1 al parámetro axis.

np.append(mat, [[11], [12]], axis=1)
array([[ 1,  2,  3, 11],
       [ 4,  5,  6, 12]])

Conclusiones

En esta entrada se ha visto cómo añadir elementos en arrays de Numpy con np.append(). Un método básico pero que es importante conocer en profundidad ya que posiblemente sea uno de los más utilizados de Numpy.

Imágenes: Pixabay (Marit Welker)