Adición de elementos a un array NumPy

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])

Categoría
Enviado por admin el Lun, 22/06/2020 - 18:58