Pular para o conteúdo

Como alterar as dimensões de entrada no Python?

[

Como alterar as dimensões de entrada em Python

Introdução

Quando se trabalha com a biblioteca NumPy em Python, uma das operações mais comuns é alterar as dimensões de uma matriz. É possível reorganizar os dados de uma matriz para acomodar diferentes configurações, especificando a estrutura desejada. Neste tutorial, você aprenderá a utilizar a função reshape() do NumPy para alterar as dimensões de uma matriz.

Pré-requisitos

Também será necessário ter o NumPy instalado em seu ambiente Python. Você pode instalá-lo utilizando o gerenciador de pacotes pip em um ambiente virtual. A seguir, você encontrará as instruções de instalação para diferentes sistemas operacionais:

Windows

Abra o PowerShell e execute os seguintes comandos:

Terminal window
PS> python -m venv venv
PS> .\venv\Scripts\activate
(venv) PS> python -m pip install numpy

Linux e macOS

Abra o terminal e execute os seguintes comandos:

Terminal window
$ python -m venv venv
$ source venv/bin/activate
(venv) $ python -m pip install numpy

Após a instalação, será necessário importar o módulo numpy em seu código Python:

import numpy as np

Agora que você está com o ambiente preparado, vamos começar a entender como alterar as dimensões de uma matriz com a função reshape() do NumPy.

Entendendo a estrutura de uma matriz

Antes de prosseguir, é importante entender alguns conceitos relacionados à estrutura de uma matriz. No NumPy, uma matriz é representada pela classe ndarray, que possui propriedades como shape e dimensions.

A propriedade shape retorna uma tupla que descreve a quantidade de elementos em cada dimensão da matriz. Já a propriedade dimensions retorna o número de dimensões da matriz. Para ilustrar esse conceito, veja o exemplo abaixo:

import numpy as np
numbers = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(numbers.shape) # Saída: (2, 4)
print(numbers.ndim) # Saída: 2

Observe que a matriz numbers possui 2 dimensões e sua forma é representada pela tupla (2, 4), indicando que a primeira dimensão tem 2 elementos e a segunda dimensão tem 4 elementos.

Como alterar as dimensões de uma matriz

A função reshape() do NumPy permite alterar as dimensões de uma matriz sem alterar seu número de dimensões. Por exemplo, você pode transformar uma matriz bidimensional em uma matriz unidimensional ou vice-versa.

Para utilizar a função reshape(), basta passar a nova forma desejada como argumento. Veja o exemplo abaixo:

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

Nesse exemplo, a matriz numbers possui 2 linhas e 3 colunas. Utilizando a função reshape(6), transformamos a matriz em uma única linha com 6 elementos.

[1 2 3 4 5 6]

Observe que a matriz foi modificada para atender à nova forma especificada. Você pode utilizar essa funcionalidade para reorganizar os dados de uma matriz de acordo com as necessidades do seu aplicativo.

Adicionando ou removendo dimensões

Além de alterar a forma de uma matriz, você pode adicionar ou remover dimensões usando a função reshape(). Isso pode ser útil para manipular matrizes em diferentes problemas ou lidar com diferentes tipos de dados.

Para adicionar uma nova dimensão a uma matriz, você pode especificar o valor -1 para a nova dimensão. O NumPy irá automaticamente inferir o tamanho dessa dimensão com base nos tamanhos das outras dimensões da matriz. Veja o exemplo abaixo:

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

Neste exemplo, a matriz original numbers possui 6 elementos. Utilizando a função reshape(2, -1), adicionamos uma nova dimensão e deixamos o NumPy inferir o tamanho dessa dimensão com base no tamanho total da matriz e no tamanho da primeira dimensão, que foi especificada como 2.

[[1 2 3]
[4 5 6]]

Observe que a matriz resultante possui 2 linhas e 3 colunas, ou seja, a nova dimensão foi adicionada automaticamente pelo NumPy.

Da mesma forma, você também pode remover dimensões de uma matriz utilizando o valor -1 para a dimensão que você deseja remover. O NumPy irá ajustar automaticamente as outras dimensões para manter a consistência. Veja o exemplo abaixo:

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

Neste exemplo, a matriz original numbers possui 2 linhas e 3 colunas. Utilizando a função reshape(-1), removemos uma das dimensões e deixamos o NumPy ajustar automaticamente a nova forma.

[1 2 3 4 5 6]

Observe que a matriz resultante possui apenas uma dimensão, ou seja, a dimensão removida foi ajustada automaticamente pelo NumPy.

Controlando a rearranjo dos dados

Ao utilizar a função reshape(), você pode controlar como os dados de uma matriz são rearranjados utilizando o parâmetro order. Esse parâmetro determina a ordem em que os elementos da matriz são organizados na nova forma especificada.

Por padrão, o valor do parâmetro order é 'C', que representa o rearranjo dos dados na ordem das colunas da matriz. No entanto, você também pode especificar 'F' para rearranjar os dados na ordem das linhas da matriz.

Vamos ver um exemplo para entender melhor:

import numpy as np
numbers = np.array([[1, 2], [3, 4], [5, 6]])
reshaped_numbers = numbers.reshape(2, 3, order='F')
print(reshaped_numbers)

Neste exemplo, a matriz original numbers possui 3 linhas e 2 colunas. Utilizando a função reshape(2, 3, order='F'), especificamos a nova forma e a ordem dos dados como 'F'.

[[1 4 5]
[3 6 2]]

Observe que os elementos da matriz foram rearranjados na ordem das linhas, como especificado no parâmetro order.

Conclusão

A função reshape() do NumPy é uma ferramenta poderosa para alterar as dimensões de uma matriz em Python. Com ela, é possível reorganizar os dados de uma matriz para atender às necessidades do seu aplicativo. Neste tutorial, você aprendeu como utilizar essa função para alterar as dimensões de uma matriz, adicionar ou remover dimensões e controlar o rearranjo dos dados. Agora você pode aplicar esse conhecimento em seus próprios projetos e aproveitar ao máximo a flexibilidade oferecida pelo NumPy.