numpy.append() em Python

A função append() do Python numpy é usada para mesclar dois arrays. Esta função retorna um novo array e o array original permanece inalterado.

Sintaxe do append() do NumPy

A sintaxe da função é:

numpy.append(arr, values, axis=None)
  • O arr pode ser um objeto semelhante a um array ou um array NumPy. Os valores são anexados a uma cópia deste array.
  • Os valores são objetos semelhantes a arrays e são anexados ao final dos elementos de “arr”.
  • O eixo especifica o eixo ao longo do qual os valores são anexados. Se o eixo não for fornecido, ambos os arrays serão achatados.

Exemplos de python numpy.append()

Vamos ver alguns exemplos da função append() do NumPy.

1. Achatando Dois Arrays

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[10, 20], [30, 40]])

# nenhum eixo fornecido, os elementos do array serão achatados
arr_flat = np.append(arr1, arr2)

print(arr_flat)  # [ 1  2  3  4 10 20 30 40]

2. Unindo ao longo do Eixo

import numpy as np

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=0)
print(f'Merged 2x2 Arrays along Axis-0:\n{arr_merged}')

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(f'Merged 2x2 Arrays along Axis-1:\n{arr_merged}')

Resultado:

Merged 2x2 Arrays along Axis-0:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
Merged 2x2 Arrays along Axis-1:
[[ 1  2 10 20]
 [ 3  4 30 40]]
  • Ao unir as matrizes 2×2 ao longo do eixo x, o tamanho da matriz de saída é 4×2.
  • Ao unir as matrizes 2×2 ao longo do eixo y, o tamanho da matriz de saída é 2×4.

3. Unindo Matrizes de Formatos Diferentes

A função append() gera um ValueError se ambas as matrizes tiverem formas diferentes, excluindo o eixo. Vamos entender esse cenário com um exemplo simples.

arr3 = np.append([[1, 2]], [[1, 2, 3], [1, 2, 3]])
print(arr3)

arr3 = np.append([[1, 2]], [[1, 2], [3, 4]], axis=0)
print(arr3)
  • No primeiro exemplo, os elementos da matriz são achatados. Portanto, mesmo que tenham tamanhos completamente diferentes – 1×2 e 2×3, o append() funciona bem.
  • No segundo exemplo, as formas das matrizes são 1×2 e 2×2. Como estamos adicionando ao longo do eixo 0, a forma do eixo 0 pode ser diferente. As outras formas devem ser iguais, então esse append() também funcionará bem.

Resultado:

[1 2 1 2 3 1 2 3]

[[1 2]
 [1 2]
 [3 4]]

Vamos ver outro exemplo em que o ValueError será gerado.

>>> import numpy as np
>>> 
>>> arr3 = np.append([[1, 2]], [[1, 2, 3]], axis=0)
Traceback (most recent call last):
  File "", line 1, in 
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/function_base.py", line 4528, in append
    return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
>>> 
Python numpy append() ValueError

As formas das matrizes são 1×2 e 2×3. Como as formas do eixo 1 são diferentes, o ValueError é gerado. Referência: Documentação da API

Source:
https://www.digitalocean.com/community/tutorials/numpy-append-in-python