Siempre llega el momento en el que tienes un array NumPy unidimensional al que quieres añadir un valor adicional (por ejemplo) y te das cuenta de que no es tan inmediato como parece.
La función np.concatenate()
La función np.concatenate() nos permite "concatenar" dos arrays a lo largo de un cierto eje. Por ejemplo:
a = np.arange(4).reshape(2, 2)
b = np.arange(10, 14).reshape(2, 2)
a, b
(array([[0, 1],
[2, 3]]),
array([[10, 11],
[12, 13]]))
Ahora, podemos concatenar ambas estructuras a lo largo de, por ejemplo, el eje horizontal:
np.concatenate([a, b], axis = 1)
array([[ 0, 1, 10, 11],
[ 2, 3, 12, 13]])
Esto, llevado a nuestro escenario inicial que involucra un array unidimensional y un nuevo valor, supone que tendríamos que convertir el valor a array NumPy o a lista para poder realizar la concatenación. Así, si partimos del siguiente array:
a = np.array([1, 2, 3])
...y queremos añadir un 4 al final, podríamos conseguirlo con el siguiente código:
np.concatenate([a, [4]])
array([1, 2, 3, 4])
Obsérvese que la función exige una lista o tupla con las estructuras a concatenar y éstas podrían ser más de dos:
np.concatenate([a, [4], [5], [6]])
array([1, 2, 3, 4, 5, 6])
La función np.append()
Otra opción un poco más simple es la ofrecida por la función np.append(). En este caso, si el valor a añadir es un escalar, podemos pasar a la función simplemente el array y el escalar:
np.append(a, 4)
array([1, 2, 3, 4])
Si queremos añadir, no un escalar, sino varios, sí deberemos pasarlos como un único argumento convirtiéndolos en lista o en tupla (o en alguna estructura semejante):
np.append(a, [4, 5])
array([1, 2, 3, 4, 5])