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
Can you explain the difference between the .copy() method and np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show how to copy a 2D array using these methods?
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