Juntando arrays com Numpy
Podemos juntar duas ou mais matriz usando o método concatenate. O método concatenate recebe dois parâmetros. O primeiro é uma tupla com as matrizes que se deseja mesclar. E o segundo é o eixo. Se não for atribuído um valor para o parâmetro eixo o seu valor padrão é zero. Então a função concatenate retornará uma matriz com uma dimensão. Se for passado o valor um, a função retornará uma matriz com duas dimensões.
Exemplo
Juntando duas matrizes 2D.
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([5, 6, 7])
# padrão axis=0
matriz = np.concatenate((array1, array2))
print(matriz)
array1 = np.array([1, 2, 3])
array2 = np.array([5, 6, 7])
# padrão axis=0
matriz = np.concatenate((array1, array2))
print(matriz)
Exemplo
Repare que o numero passado ao parâmetro axis define em quantas pastes cada matriz vai ser dividida. Nesse exemplo, passamos duas matrizes com duas dimensões cada, e passamos o valor um ao parâmetro axis. Assim as duas dimensões da array1 vão ser mescladas em um eixo, transformando a array1 numa matriz com uma dimensão. O mesmo acontece com a array2. Se, nesse exemplo, passássemos o valor zero (zero eixos) o resultado da função concatenate seria uma matriz com duas dimensões com quatro linhas e duas colunas. Passando o valor um o resultado seria uma matriz com duas linhas e quatro colunas. A mesma lógica se aplica quando passamos matrizes com três dimensões.
import numpy as np
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
matriz = np.concatenate((array1, array2), axis=1)
print(matriz)
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
matriz = np.concatenate((array1, array2), axis=1)
print(matriz)
Exemplo
Lembre-se que a função concatenate só funciona com matrizes com o mesmo numero de dimensões. Se for passado uma matriz com o numero de dimensões diferente das outras um erro será lançado.
import numpy as np
array1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
array2 = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
print('axis=0')
matriz = np.concatenate((array1, array2))
print(matriz)
print('axis=1')
matriz = np.concatenate((array1, array2), axis=1)
print(matriz)
print('axis=2')
matriz = np.concatenate((array1, array2), axis=2)
print(matriz)
array1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
array2 = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
print('axis=0')
matriz = np.concatenate((array1, array2))
print(matriz)
print('axis=1')
matriz = np.concatenate((array1, array2), axis=1)
print(matriz)
print('axis=2')
matriz = np.concatenate((array1, array2), axis=2)
print(matriz)
Juntando matrizes com a função stack
A função stack empilhar os elementos de uma matriz, um em cima do outro, de acordo com o eixo passado para a função como argumento. A função concatenate junta as matrizes na horizontal e a função stack junta os elementos da matriz na horizontal.
Exemplo
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
print('Função stack: Vertical')
matriz = np.stack((array1, array2), axis=1)
print(matriz)
print('Função concatenate: Horizontal')
matriz = np.concatenate((array1, array2))
print(matriz)
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
print('Função stack: Vertical')
matriz = np.stack((array1, array2), axis=1)
print(matriz)
print('Função concatenate: Horizontal')
matriz = np.concatenate((array1, array2))
print(matriz)
Juntando matrizes com a função hstack
Se você quiser empilhar os elementos da matriz por linha a função hstack pode ser útil.
Exemplo
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
array3 = np.array([[1, 2, 3], [4, 5, 6]])
array4 = np.array([[7, 8, 9], [10, 11, 12]])
print('Matrizes com uma dimensão')
matriz = np.hstack((array1, array2))
print(matriz)
print('Matrizes com duas dimensões')
matriz = np.hstack((array3, array4))
print(matriz)
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
array3 = np.array([[1, 2, 3], [4, 5, 6]])
array4 = np.array([[7, 8, 9], [10, 11, 12]])
print('Matrizes com uma dimensão')
matriz = np.hstack((array1, array2))
print(matriz)
print('Matrizes com duas dimensões')
matriz = np.hstack((array3, array4))
print(matriz)
Juntando matrizes com a função vstack
Para empilhar os elementos das matrizes por coluna a função é a vstack.
Exemplo
import numpy as np
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([[7, 8, 9], [10, 11, 12]])
matriz = np.vstack((array1, array2))
print(matriz)
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([[7, 8, 9], [10, 11, 12]])
matriz = np.vstack((array1, array2))
print(matriz)
Juntando matrizes com a função dstack
A função dstack mescla os elementos da array por profundidade (eixo z). Por isso ela retorna uma array com três dimensões.
Exemplo
Para ficar mais claro tente passar para as funções concatenate, stack, hstack, vstack e dstack matrizes com diferentes números de dimensões.
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
matriz = np.dstack((array1, array2))
print(matriz)
print(matriz.ndim)
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
matriz = np.dstack((array1, array2))
print(matriz)
print(matriz.ndim)
0 comentários:
Postar um comentário