Assim como em outras linguagens de programação, a biblioteca Numpy tem como fazer cópia matrizes bem definido que auxilia no desenvolvimento de matrizes numéricas.
Uma cópia de matriz NumPy é uma nova matriz que é criada a partir de uma matriz existente.
Ela é uma cópia completa dos dados da matriz original, incluindo o seu tipo de dados e forma (shape).
Em NumPy, existem dois tipos principais de cópias de matrizes:
- Cópia profunda (deep copy): Nesse caso, é criada uma nova matriz e os valores são copiados para a nova matriz. Qualquer alteração feita na matriz original não afetará a cópia profunda;
- Cópia superficial (shallow copy): Nesse caso, é criada uma nova matriz que contém apenas uma referência aos dados da matriz original. Qualquer alteração feita na matriz original afetará a cópia superficial.
Para criar uma cópia de matriz NumPy, você pode usar o método copy()
. Por exemplo:
import numpy as np
# criando uma matriz NumPy
a = np.array([1, 2, 3])
# criando uma cópia profunda
b = a.copy()
# criando uma cópia superficial
c = a.view()
#Mostrando os resultados
print(a)
print(b)
print(c)
No exemplo acima, a matriz b
é uma cópia profunda da matriz a
, enquanto a matriz c
é uma cópia superficial.
Qual a diferença entre a cópia profunda e a cópia superficial

A principal diferença entre uma cópia profunda e uma cópia superficial de um array numpy é que a cópia é um novo array e a visualização é apenas uma visualização do array original.
A cópia profunda possui os dados e quaisquer alterações feitas na cópia não afetarão o array original, e quaisquer alterações feitas no array original não afetarão a cópia.
A cópia superficial não possui os dados e quaisquer alterações feitas na exibição afetarão a matriz original, e quaisquer alterações feitas na matriz original afetarão a exibição.
Outra explicação sobre estas diferenças pode ser dada nos paragrafos abaixo, caso a anterior não enteja bem definida.
Em uma matriz NumPy, uma cópia superficial cria uma nova matriz que aponta para os mesmos dados da matriz original. Ou seja, quaisquer alterações feitas em uma matriz afetarão a outra, pois ambas apontam para os mesmos dados.
Por outro lado, uma cópia profunda cria uma nova matriz e copia todos os dados da matriz original para a nova matriz. Isso significa que as duas matrizes são completamente independentes e quaisquer alterações feitas em uma matriz não afetarão a outra.
Em resumo, a diferença fundamental é que uma cópia superficial cria uma nova matriz que compartilha os mesmos dados que a matriz original, enquanto uma cópia profunda cria uma nova matriz com seus próprios dados.
Contudo o exemplo abaixo faz uma cópia profunda, altera o array original e exiba os dois arrays para mostras a diferenças:
import numpy as np
arra = np.array([1, 2, 3, 4, 5])
x = arra.copy()
arra[0] = 42
print(arra)
print(x)
Contudo logo abaixo e visto um exemplo prático de uma cópia de matriz superficial Numpy.
import numpy as np
arre = np.array([1, 2, 3, 4, 5])
x = arre.view()
arre[0] = 42
print(arre)
print(x)
Verifique se o array na cópia de marizes numpy possui seus dados
Conforme ja foi visto neste artigo, as cópias profundas dos dados e as cópias superficiais das matrizes numpy, ou seja, a cópia de matrizes numpy não são proprietárias dos dados.
Para verificarmos esta situação a matriz NumPy possui a base de atributos que retorna None se a matriz possuir os dados.
Caso contrário, o atributo base refere-se ao objeto original.
Veja o exemplo no código abaixo.
import numpy as np
arre = np.array([1, 2, 3, 4, 5])
x = arre.copy()
y = arre.view()
print(x.base)
print(y.base)
Contudo terminaremos este artigo sobre cópia de matrizes numpy.
Contudo veja abaixo o link do nosso grupo do telegram.
Contudo se quiser ver videos gatuitos que podem ajudar na sua carreira na tecnologia, se inscreva em nosso canal do youtube.
Veja o link abaixo
Espero que tenham gostado
Um forte abraço a todos