Copiando Arrays
Frequentemente, é necessário criar uma cópia de um array para realizar alterações sem afetar o array original.
Atribuição Simples
Primeiramente, será discutido por que não é possível simplesmente criar outra variável utilizando array_2 = array_1, onde array_1 é o array original.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
Alteramos o valor do primeiro elemento de array_2 para 10, mas essa atribuição também alterou o valor do primeiro elemento de array_1 para 10.
Com array_2 = array_1, não está sendo criado um novo array; em vez disso, está sendo criada uma referência ao mesmo array na memória. Como resultado, quaisquer alterações feitas em array_2 também afetarão array_1.
Para resolver esse problema, poderíamos escrever array_2 = np.array([1, 2, 3]), mas isso significaria escrever o mesmo código duas vezes. Lembre-se do princípio fundamental na programação: Não se repita.
Método ndarray.copy()
Felizmente, o NumPy possui um método ndarray.copy() como solução para esse problema.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Agora, foi criado um novo array para array_2 com os mesmos elementos de array_1.
Para arrays 2D, o procedimento de cópia é exatamente o mesmo.
Função numpy.copy()
Em vez do método .copy(), também podemos utilizar a função copy(), que recebe o array como parâmetro: array_2 = np.copy(array_1).
Tanto a função quanto o método funcionam da mesma forma; no entanto, existe uma diferença. Ambos possuem o parâmetro order, que especifica o layout de memória do array, mas seus valores padrão são diferentes.
A imagem abaixo mostra a estrutura do array sales_data_2021 utilizado na tarefa:
Swipe to start coding
Você está analisando os dados de vendas trimestrais de uma empresa para o ano de 2021. Os dados estão armazenados em um array NumPy chamado sales_data_2021, onde cada linha representa um produto específico e cada coluna representa as vendas trimestrais desse produto.
- Crie uma cópia de
sales_data_2021utilizando o método apropriado de um array NumPy e armazene emsales_data_2022. - Atualize os dois últimos elementos da primeira linha (representando as vendas trimestrais de um produto) em
sales_data_2022para390e370:- Utilize um índice positivo para especificar a linha;
- Utilize um fatiamento com apenas um valor negativo em
startpara indexar os dois últimos elementos.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.7
Copiando Arrays
Deslize para mostrar o menu
Frequentemente, é necessário criar uma cópia de um array para realizar alterações sem afetar o array original.
Atribuição Simples
Primeiramente, será discutido por que não é possível simplesmente criar outra variável utilizando array_2 = array_1, onde array_1 é o array original.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
Alteramos o valor do primeiro elemento de array_2 para 10, mas essa atribuição também alterou o valor do primeiro elemento de array_1 para 10.
Com array_2 = array_1, não está sendo criado um novo array; em vez disso, está sendo criada uma referência ao mesmo array na memória. Como resultado, quaisquer alterações feitas em array_2 também afetarão array_1.
Para resolver esse problema, poderíamos escrever array_2 = np.array([1, 2, 3]), mas isso significaria escrever o mesmo código duas vezes. Lembre-se do princípio fundamental na programação: Não se repita.
Método ndarray.copy()
Felizmente, o NumPy possui um método ndarray.copy() como solução para esse problema.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Agora, foi criado um novo array para array_2 com os mesmos elementos de array_1.
Para arrays 2D, o procedimento de cópia é exatamente o mesmo.
Função numpy.copy()
Em vez do método .copy(), também podemos utilizar a função copy(), que recebe o array como parâmetro: array_2 = np.copy(array_1).
Tanto a função quanto o método funcionam da mesma forma; no entanto, existe uma diferença. Ambos possuem o parâmetro order, que especifica o layout de memória do array, mas seus valores padrão são diferentes.
A imagem abaixo mostra a estrutura do array sales_data_2021 utilizado na tarefa:
Swipe to start coding
Você está analisando os dados de vendas trimestrais de uma empresa para o ano de 2021. Os dados estão armazenados em um array NumPy chamado sales_data_2021, onde cada linha representa um produto específico e cada coluna representa as vendas trimestrais desse produto.
- Crie uma cópia de
sales_data_2021utilizando o método apropriado de um array NumPy e armazene emsales_data_2022. - Atualize os dois últimos elementos da primeira linha (representando as vendas trimestrais de um produto) em
sales_data_2022para390e370:- Utilize um índice positivo para especificar a linha;
- Utilize um fatiamento com apenas um valor negativo em
startpara indexar os dois últimos elementos.
Solução
Obrigado pelo seu feedback!
single