Reestruturação da Matriz do NumPy

Reshape de array

A重塑 significa alterar a forma do array.

A forma do array é o número de elementos em cada dimensão.

Através da重塑, podemos adicionar ou remover dimensões ou alterar o número de elementos em cada dimensão.

De 1-D para 2-D

Exemplo

Converter o seguinte array 1-D de 12 elementos em um array 2-D.

A dimensão externa terá 4 arrays, cada um contendo 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)

Executar Exemplo

De 1-D para 3-D

Exemplo

Converter o seguinte array 1-D de 12 elementos em um array 3-D.

A dimensão externa terá 2 arrays, cada um contendo 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)

Executar Exemplo

Podemos重塑 em qualquer forma?

Sim, desde que o número de elementos necessários para a重塑 seja igual em ambas as formas.

Podemos重塑 8 elementos de um array 1D em 4 elementos de um array 2D de 2 linhas, mas não podemos重塑 em um array 2D de 3 elementos em 3 linhas, pois isso exigiria 3x3 = 9 elementos.

Exemplo

Tente converter um array 1D com 8 elementos em um array 2D com 3 elementos em cada dimensão (isto 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)

Executar Exemplo

Retornar cópia ou vista?

Exemplo

Verificar se o array retornado é uma cópia ou uma vista:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)

Executar Exemplo

O exemplo acima retorna o array original, portanto, é uma visão.

Dimensão Desconhecida

Você pode usar uma dimensão “desconhecida”.

Isso significa que você não precisa especificar um número exato para uma das dimensões no método reshape.

Passar -1 Como valor, o NumPy calculará esse número para você.

Exemplo

Converter um array 1D de 8 elementos em um array 3D de 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)

Executar Exemplo

Observação:Não podemos converter -1 Passados para uma ou mais dimensões.

Flattening arrays

Flattening arrays (Flattening the arrays) significa converter arrays multidimensionais em arrays 1D.

Podemos usar reshape(-1) Para fazer isso.

Exemplo

Converter arrays em 1D:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

Executar Exemplo

Observação:Há muitas funções que podem alterar a forma dos arrays numpy flatten, ravel, e também reordenar elementos rot90, flip, fliplr, flipud, etc. Essas funções pertencem à parte intermediária e avançada do numpy.