NumPy Tutorials

Dominando o Redimensionamento e o Redimensionamento de Arrays NumPy

Spread the love

Manipular eficientemente formatos de arrays é fundamental para o processamento eficaz de dados com NumPy. Este tutorial aborda duas funções principais para reformar e redimensionar arrays NumPy: reshape() e resize(). Exploraremos suas funcionalidades, diferenças sutis e melhores práticas para garantir que você possa utilizá-las com confiança em seus projetos de ciência de dados.

Sumário

  1. numpy.reshape()
  2. ndarray.reshape()
  3. Considerações sobre Memória Compartilhada
  4. numpy.resize()

1. numpy.reshape()

A função numpy.reshape() é uma ferramenta versátil para modificar o formato de um array NumPy sem alterar seus dados subjacentes. Requer o array e o novo formato desejado como entradas. Crucialmente, o novo formato deve ser compatível com o tamanho do array original (o número total de elementos deve permanecer inalterado).


import numpy as np

arr = np.arange(12)  # Cria um array [0, 1, 2, ..., 11]
print("Array original:n", arr)

reshaped_arr = np.reshape(arr, (3, 4))  # Reformate para uma matriz 3x4
print("nArray reformado:n", reshaped_arr)

#Usando -1 para cálculo automático de dimensão
auto_reshape = np.reshape(arr, (-1, 3)) 
print("nArray auto-reformatado:n", auto_reshape)

#Tratamento de Erros para formatos incompatíveis
try:
    invalid_reshape = np.reshape(arr, (2,7))
    print(invalid_reshape)
except ValueError as e:
    print(f"nErro: {e}")

2. ndarray.reshape()

O método ndarray.reshape() fornece uma abordagem alternativa, operando diretamente em um objeto ndarray existente. Sua funcionalidade é idêntica à numpy.reshape(); a única diferença reside no método de invocação.


arr = np.arange(12)
reshaped_arr = arr.reshape((4, 3))  # Chamada de método
print("nArray reformado (chamada de método):n", reshaped_arr)

3. Considerações sobre Memória Compartilhada

Tanto numpy.reshape() quanto ndarray.reshape() geralmente operam no local. Isso significa que eles não criam uma cópia dos dados do array; em vez disso, eles modificam a visualização dos dados subjacentes. Isso é altamente eficiente em termos de memória. Alterações no array reformado são refletidas no original e vice-versa. No entanto, isso também exige consideração cuidadosa, especialmente se você precisar preservar o conteúdo do array original. Para criar uma cópia, use o método .copy():


arr = np.arange(12)
reshaped_arr = arr.reshape((3,4))
reshaped_arr[0,0] = 99 # Modifica o array original também!
print("nArray original após modificação do reshape:n", arr)

arr = np.arange(12)
reshaped_arr_copy = arr.reshape((3,4)).copy() # Cria uma cópia
reshaped_arr_copy[0,0] = 100 # Modifica apenas a cópia
print("nArray original após modificação da cópia:n", arr)

4. numpy.resize()

A função numpy.resize() oferece a capacidade de alterar o tamanho de um array, ao contrário de reshape(), que preserva o número total de elementos. resize() pode alterar o número de elementos. Se o novo tamanho for maior, o array é preenchido com zeros ou elementos repetidos. Se menor, os elementos são truncados. Importante: resize() *sempre* retorna um novo array; ele não modifica o original no local.


arr = np.arange(5)
resized_arr = np.resize(arr, (8,))  # Redimensiona para comprimento 8
print("nArray redimensionado (preenchido com zeros):n", resized_arr)

resized_arr_2 = np.resize(arr,(2,)) #Redimensiona para comprimento 2
print("nArray redimensionado (truncado):n", resized_arr_2)

resized_arr_3 = np.resize(arr, (2,3)) #Redimensiona para 2x3, irá repetir o array
print("nArray redimensionado (repetido):n", resized_arr_3)

Este tutorial fornece uma visão geral abrangente de reformar e redimensionar arrays NumPy. Dominar essas técnicas é vital para a manipulação eficiente de dados em computação científica e ciência de dados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *