Copier un tableau 2D en Python

Isaac Tony 30 janvier 2023
  1. Créer une copie de tableaux 2D à l’aide de la fonction NumPy copy()
  2. Créer une copie d’un tableau 2D à l’aide de la fonction copy.deepcopy()
  3. Créer une copie superficielle d’un tableau 2D en Python
Copier un tableau 2D en Python

Un tableau à deux dimensions est un tableau de tableaux représentant des données en lignes et en colonnes.

Les éléments des tableaux à deux dimensions sont accessibles à l’aide de deux indices. Le premier index fait référence aux sous-tableaux du tableau et le second index fait référence aux éléments individuels.

Les tableaux à deux dimensions suivent la syntaxe suivante.

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

Le premier sous-tableau représente la ligne, tandis que le second sous-tableau représente la colonne du tableau.

Faire des copies d’objets est un aspect important du travail et de la modification des tableaux.

Cela nous permet d’itérer et de modifier librement des objets tels que des tableaux sans rencontrer d’erreurs. La création de copies nous permet également de conserver les objets d’origine et d’effectuer à la place des opérations sur les copies.

Python offre une gamme de fonctions d’usine qui peuvent être utilisées pour créer une copie d’un tableau ou de tout autre objet modifiable en Python. Ces objets modifiables incluent des dictionnaires, des ensembles et des listes.

Créer une copie de tableaux 2D à l’aide de la fonction NumPy copy()

NumPy propose la fonction copy(). La fonction copy() peut être implémentée comme indiqué ci-dessous.

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)

Production :

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

Dans l’exemple de code, nous avons créé une copie du tableau d’origine et modifié la copie. Cependant, nous avons conservé la copie originale du tableau, imprimée à la dernière ligne.

Créer une copie d’un tableau 2D à l’aide de la fonction copy.deepcopy()

En utilisant la fonction de copie en profondeur, nous pouvons créer un nouvel objet composé en ajoutant de manière récursive les objets de l’objet d’origine dans le nouvel objet.

Cela signifie que les modifications apportées au nouvel objet, qui est un tableau, n’affecteront pas le tableau d’origine. Nous allons utiliser la fonction deepcopy() disponible dans le module copy pour implémenter cette méthode.

Le module de copie fournit des fonctions pour copier des éléments à partir d’objets Python tels que des listes et des tableaux. La fonction deepcopy() peut être utilisée pour créer une copie du tableau 2D, comme indiqué dans l’exemple ci-dessous.

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)

Production :

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

Créer une copie superficielle d’un tableau 2D en Python

De même, la méthode de copie superficielle crée également un objet composé représentant l’objet d’origine. Contrairement à la copie complète, qui insère des copies des objets d’origine, la copie superficielle ne fait référence qu’aux objets de l’objet d’origine.

Par conséquent, la copie superficielle n’est pas récursive mais nous permet uniquement de copier la référence d’un objet dans un objet différent. Cela signifie que les modifications apportées à un objet n’affecteront pas l’autre objet.

Comme indiqué ci-dessous, la copie superficielle peut être implémentée à l’aide de la fonction 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)

Production :

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

Dans ce cas, la modification de la valeur d’un tableau modifie les valeurs du tableau d’origine. Cependant, les deux tableaux référencent toujours des objets différents.

En utilisant la fonction id(), nous pouvons vérifier que les deux tableaux référencent des objets différents. Il s’agit d’une fonction intégrée qui renvoie l’identité des objets et peut être implémentée comme indiqué ci-dessous.

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)

Production :

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

Alternativement, nous pouvons également créer une copie superficielle d’un tableau 2D en utilisant la fonction copy().

Le module de copie fournit la fonction copy() qui fournit différentes fonctions pour copier des éléments dans des listes, des tableaux et d’autres objets. Comme indiqué ci-dessous, la fonction copy peut être implémentée pour créer une copie superficielle.

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)

Production :

[[ 24  23 100]
 [ 32  43  54]]
[[24 23 25]
 [32 43 54]]
Auteur: 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

Article connexe - Python Array