Pesquisa de site

Diferença entre os métodos reshape() e resize() em Numpy


O tamanho dos arrays NumPy pode ser alterado com a ajuda de duas funções em python: remodelar e redimensionar. Há apenas uma coisa que os diferencia: o array original permanece inalterado ao usar resize() enquanto reshape() retorna apenas o array alterado e o array original permanece intacto.

Sintaxe

Remodelar()

reshape(x,y)

Nesta sintaxe, x especifica o número de arrays menores que devem ser criados a partir do array maior fornecido como entrada e y denota o número real de elementos presentes no array.

O método retorna um array modificado se os valores forem práticos e retorna erro se o array não puder ser dividido no número especificado de arrays menores.

Redimensionar()

resize(x,y)

A função é muito semelhante à função reshape() ao determinar os parâmetros xey. O padrão de retorno também permanece o mesmo.

Além disso, a matriz original é alterada permanentemente.

Exemplo 1

Isso explica o uso do atributo reshape() para manipular os recursos do array. Neste exemplo, uma matriz de 8 elementos é remodelada de forma que seja dividida em 4 matrizes menores, cada uma contendo 2 elementos.

Algoritmo

Etapa 1: importar numpy como np

Etapa 2: crie um array numpy a partir do array fornecido.

Etapa 3: use a função reshape passando o número de elementos em cada array menor e o número desses arrays menores.

Etapa 4: imprima o array.

Exemplo

#import numpy
import numpy as np
 
#create a numpy array with values of the array.
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])

#print the contents of the original numpy array
print("Original array: ")
display(data)

#reshape the array into a 4x2 matrix and display it.
print("Reshaped array: ")
display(data.reshape(4, 2))

#print the original array 
print("Original array:")
display(data)

Saída

Original array: 
array([10, 20, 30, 40, 50, 60, 70, 80])

Reshaped array: 
array([[10, 20],
    [30, 40],
    [50, 60], 
    [70, 80]])

Na saída, podemos ver que o array original permanece inalterado mesmo após o uso de reshape() . As alterações são feitas na matriz de buffer que possui as dimensões exigidas.

Exemplo 2

Este código explica o uso do atributo resize() para manipular os recursos do array. Aqui, um array de 8 elementos é redimensionado de forma que seja dividido em 4 arrays, cada um contendo 2 elementos. Observe que as alterações são feitas no próprio array original.

Algoritmo

Etapa 1: importar numpy como np

Etapa 2: crie um array numpy a partir do array fornecido.

Etapa 3: use a função de redimensionamento passando o número de elementos em cada array menor e o número desses arrays menores.

Etapa 4: imprima o array.

Exemplo

#import numpy
import numpy as np

#create a numpy array with values of the array
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])

#print the contents of the original array
print("Original array: ")
display(data)

#resize the array into a 4x2 matrix
print("Resized array: ")
display(data.resize(4, 2))
 
#print the original array
print("Original array:")
display(data)

Saída

Original array: 
array([10, 20, 30, 40, 50, 60, 70, 80])

Resized array: 
None

Original array:
array([[10, 20],
    [30, 40],
    [50, 60],
    [70, 80]])

Podemos observar que não existe um array redimensionado disponível separadamente e o próprio array original é manipulado para corresponder às dimensões mencionadas pelo usuário como parâmetros na função de redimensionamento.

Principais diferenças

Functionality

O atributo reshape lança um ValueError se a matriz não for divisível no número especificado de submatrizes. O erro de valor é observado sempre que faltam elementos suficientes no array.

In-place switching

No caso de reshape() uma cópia do array existente é criada e a alteração nas dimensões é feita na cópia do array. Portanto, não há mudança nas dimensões da matriz original

Conclusão

Ambos os métodos, reshape() ou resize() podem ser usados em uma situação em que não há necessidade de preservar o array original. Mas, se os parâmetros passados para as funções não corresponderem ao tamanho real do array ou se o array não tiver tantos elementos, serão gerados erros.

Remodelar é preferível ao redimensionar se a matriz original precisar permanecer intacta.

Artigos relacionados: