Copie un array 2D en Python

Isaac Tony 30 enero 2023
  1. Cree una copia de arreglos 2D usando la función NumPy copy()
  2. Cree una copia de un array 2D usando la función copy.deepcopy()
  3. Crear una copia superficial de un array 2D en Python
Copie un array 2D en Python

un array bidimensional es un array de matrices que representan datos en filas y columnas.

Se puede acceder a los elementos en arreglos bidimensionales usando dos índices. El primer índice se refiere a los subarreglos dentro del arreglo y el segundo índice se refiere a los elementos individuales.

Las matrices bidimensionales siguen la siguiente sintaxis.

array_name = [[d1, d2, d3, d4, ..., dn], [c1, c2, c3, c4, ...., cn]]

El primer subarreglo representa la fila, mientras que el segundo subarreglo representa la columna de la tabla.

Hacer copias de objetos es un aspecto importante del trabajo y la modificación de arreglos.

Esto nos permite iterar y modificar libremente objetos como matrices sin encontrar errores. La creación de copias también nos permite conservar los objetos originales y, en su lugar, realizar operaciones en las copias.

Python ofrece una variedad de funciones de fábrica que se pueden usar para crear una copia de un array o cualquier otro objeto mutable en Python. Estos objetos mutables incluyen diccionarios, conjuntos y listas.

Cree una copia de arreglos 2D usando la función NumPy copy()

NumPy ofrece la función copy(). La función copy() se puede implementar como se muestra a continuación.

import numpy as np

x = np.array([[23, 34, 45], [24, 45, 78]])

y = x.copy()
print(y)

# making changes to the copy of array
y[0][2] = 65
print(y)

# printing original 2d array
print(x)

Producción :

[[23 34 45]
 [24 45 78]]
[[23 34 65]
 [24 45 78]]
[[23 34 45]
 [24 45 78]]

En el código de ejemplo, creamos una copia del array original y cambiamos la copia. Sin embargo, hemos conservado la copia original del array, impresa en la última línea.

Cree una copia de un array 2D usando la función copy.deepcopy()

Usando la función de copia profunda, podemos crear un nuevo objeto compuesto agregando recursivamente los objetos del objeto original al nuevo objeto.

Esto significa que los cambios realizados en el nuevo objeto, que es un array, no afectarán al array original. Usaremos la función deepcopy() disponible en el módulo de copia para implementar este método.

El módulo de copia proporciona funciones para copiar elementos de objetos de Python, como listas y matrices. La función deepcopy() se puede utilizar para crear una copia del array 2D, como se muestra en el siguiente ejemplo.

import copy

x = [[24, 23, 25], [32, 43, 54]]
y = copy.deepcopy(x)
# a copy of the original array
print(y)
# making changes to the copy of the array
y[0][2] = 100
print(y)

# original array
print(x)

Producción :

[[24, 23, 25], [32, 43, 54]]
[[24, 23, 100], [32, 43, 54]]
[[24, 23, 25], [32, 43, 54]]

Crear una copia superficial de un array 2D en Python

De manera similar, el método de copia superficial también crea un objeto compuesto que representa el objeto original. A diferencia de la copia profunda, que inserta copias de los objetos originales, la copia superficial solo hace referencia a objetos en el objeto original.

Por lo tanto, la copia superficial no recurre sino que solo nos permite copiar la referencia de un objeto en un objeto diferente. Esto significa que los cambios en un objeto no afectarán al otro objeto.

Como se muestra a continuación, la copia superficial se puede implementar utilizando la función view().

import numpy as np

x = np.array([[24, 23, 25], [32, 43, 54]])

y = x.view()

# a copy of the original array

# making changes to the copy of the array
y[0][2] = 100
print(y)

# original array
print(x)

Producción :

[[ 24  23 100]
 [ 32  43  54]]
[[ 24  23 100]
[ 32  43  54]]

En este caso, cambiar el valor de un array cambia los valores del array original. Sin embargo, las dos matrices aún hacen referencia a diferentes objetos.

Usando la función id(), podemos verificar que las dos matrices hacen referencia a diferentes objetos. Esta es una función integrada que devuelve la identidad de los objetos y se puede implementar como se muestra a continuación.

import numpy as np

x = np.array([[24, 23, 25], [32, 43, 54]])
print(id(x))

y = x.view()

print(id(y))
# a copy of the original array

# making changes to the copy of the array
y[0][2] = 100
print(y)

# original array
print(x)

Producción :

139636169252912
139636169253008
[[ 24  23 100]
 [ 32  43  54]]
[[ 24  23 100]
 [ 32  43  54]]

Alternativamente, también podemos crear una copia superficial de un array 2D usando la función copy().

El módulo de copia proporciona la función copy() que proporciona diferentes funciones para copiar elementos en listas, matrices y otros objetos. Como se muestra a continuación, la función copy se puede implementar para crear una copia superficial.

import numpy as np
import copy

x = np.array([[24, 23, 25], [32, 43, 54]])

y = copy.copy(x)

# a copy of the original array

# making changes to the copy of the array
y[0][2] = 100
print(y)

# original array
print(x)

Producción :

[[ 24  23 100]
 [ 32  43  54]]
[[24 23 25]
 [32 43 54]]
Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Artículo relacionado - Python Array