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 -1como 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 -1para 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, ravele também para reorganizar os elementos rot90, flip, fliplr, flipudetc. Elas se enquadram na seção Intermediário a Avançado de numpy.


Teste-se com exercícios

Exercício:

Use o método NumPy correto para alterar a forma de uma matriz de 1-D para 2-D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)