Cópia NumPy()

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.

Deixe um comentário

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