Remodelagem da matriz NumPy
Remodelando matrizes
Remodelar significa mudar a forma de uma matriz.
A forma de uma matriz é o número de elementos em cada dimensão.
Ao remodelar, podemos adicionar ou remover dimensões ou alterar o número de elementos em cada dimensão.
Remodelar de 1-D para 2-D
Exemplo
Converta o seguinte array 1-D com 12 elementos em um array 2-D.
A dimensão mais externa terá 4 arrays, cada um com 3 elementos:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(4, 3)
print(newarr)
Remodelar de 1-D para 3-D
Exemplo
Converta o seguinte array 1-D com 12 elementos em um array 3-D.
A dimensão mais externa terá 2 arrays que contém 3 arrays, cada um com 2 elementos:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
Podemos remodelar em qualquer forma?
Sim, desde que os elementos necessários para a remodelação sejam iguais em ambas as formas.
Podemos remodelar uma matriz 1D de 8 elementos em 4 elementos em uma matriz 2D de 2 linhas, mas não podemos reformulá-la em uma matriz 2D de 3 elementos e 3 linhas, pois isso exigiria 3x3 = 9 elementos.
Exemplo
Tente converter um array 1D com 8 elementos para um array 2D com 3 elementos em cada dimensão (irá gerar um erro):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
Retorna Copiar ou Visualizar?
Exemplo
Verifique se a matriz retornada é uma cópia ou uma visualização:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
O exemplo acima retorna o array original, então é uma view.
Dimensão desconhecida
Você tem permissão para ter uma dimensão "desconhecida".
Isso significa que você não precisa especificar um número exato para uma das dimensões no método de remodelação.
Passe -1
como o valor e o NumPy calculará esse número para você.
Exemplo
Converter array 1D com 8 elementos para array 3D com 2x2 elementos:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
Nota: Não podemos passar -1
para mais de uma dimensão.
Achatando as matrizes
O achatamento de matriz significa converter uma matriz multidimensional em uma matriz 1D.
Podemos usar reshape(-1)
para fazer isso.
Exemplo
Converta a matriz em uma matriz 1D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
Nota: Existem muitas funções para alterar as formas de matrizes em numpy flatten
, ravel
e também para reorganizar os elementos rot90
, flip
, fliplr
, flipud
etc. Elas se enquadram na seção Intermediário a Avançado de numpy.