Resumo : neste tutorial, você aprenderá como usar o copy()
método NumPy para criar uma cópia de um array em vez de uma visualização.
Introdução ao método NumPy copy()
Ao fatiar um array, você obtém um subarray. O subarray é uma visão do array original. Em outras palavras, se você alterar os elementos do subarray, a alteração será refletida no array original. Por exemplo:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6]
])
b = a[0:, 0:2]
print(b)
b[0, 0] = 0
print(b)
print(a)
Linguagem de código: Python ( python )
Como funciona.
Primeiro, crie um array 2D:
a = np.array([
[1, 2, 3],
[4, 5, 6]
])
Linguagem de código: Python ( python )
Segundo, divida o array a e atribua o subarray à variável b:
b = a[0:, 0:2]
Linguagem de código: Python ( python )
A variável b é:
[[1 2]
[4 5]]
Linguagem de código: Python ( python )
Terceiro, altere o elemento no índice [0,0] no subarray b para zero e exiba a variável b:
b[0, 0] = 0
print(b)
Linguagem de código: Python ( python )
[[0 2]
[4 5]]
Linguagem de código: Python ( python )
Como b é uma visão do array a, a mudança também é refletida no array a:
print(a)
Linguagem de código: Python ( python )
[[0 2 3]
[4 5 6]]
Linguagem de código: Python ( python )
A razão pela qual numpy cria uma visualização em vez de um novo array é que ele não precisa copiar dados, melhorando assim o desempenho.
No entanto, se você quiser uma cópia de um array em vez de uma visualização, poderá usar copy()
o método. Por exemplo:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6]
])
# make a copy
b = a[0:, 0:2].copy()
print(b)
b[0, 0] = 0
print(b)
print(a)
Linguagem de código: Python ( python )
Neste exemplo:
Primeiro, chame o copy()
método do array a para fazer uma cópia de um subarray e atribua-o à variável b.
Segundo, altere o elemento no índice [0,0] do array b, como ambos os arrays são independentes, a mudança não afeta o array a.
Resumo
- Ao fatiar um array, você terá uma visão do array.
- Use o
copy()
método para fazer uma cópia de um array em vez de uma visualização.