Hướng dẫn how do you copy an array in python? - làm thế nào để bạn sao chép một mảng trong python?

Hướng dẫn how do you copy an array in python? - làm thế nào để bạn sao chép một mảng trong python?

Sao chép một mục này từ một mục khác là một hoạt động cẩn thận nếu được thực hiện kém, nó có hậu quả. Trong lập trình, bạn không chỉ sao chép các giá trị; Đôi khi, bạn cũng sao chép tài liệu tham khảo. Hãy cùng xem cách sao chép một mảng trong Python.

Để sao chép một mảng trong Python, hãy sử dụng toán tử gán (=). Toán tử gán không sao chép các đối tượng. Thay vào đó, nó tạo ra các ràng buộc giữa mục tiêu và một đối tượng. Khi chúng tôi sử dụng toán tử =, chúng tôi nghĩ rằng nó tạo ra một đối tượng mới, nhưng nó không có. Thay vào đó, nó tạo ra một biến mới chia sẻ tham chiếu của đối tượng gốc.copy an array in Python, use the assignment operator(=). The assignment operator does not copy objects. Instead, it creates bindings between a target and an object. When we use the = operator, we think it creates a new object, but it doesn’t. Instead, it creates a new variable that shares the reference of the original object.

Để minh họa điều này, hãy để Lừa lấy một ví dụ và xem những gì tôi đang nói.

import numpy as np
arr = np.array([1, 2, 3, 4, 5])

# Printing the id of the array
print(id(arr))

# Using assignment operator to copy array
arr2 = arr

# Printing the id of the copied array
print(id(arr2))

# Changing the original array
arr[2] = 11

# Printing both arrays
print(arr)
print(arr2)

Đầu ra



[ 1 2 11 4 5]
[ 1 2 11 4 5]

Chúng tôi đã sao chép ARR2 từ ARR, nhưng cả hai đối tượng mảng đều có cùng tham chiếu. Vì vậy, khi bạn sửa đổi mảng ban đầu, thay đổi cũng sẽ áp dụng cho mảng được sao chép. Vì vậy, nếu bạn thay đổi ARR, ARR2 cũng sẽ thay đổi.arr2 from arr, but both array objects share the same reference. So when you modify the original array, the change will also apply to the copied array. So, if you change the arr, the arr2 will change too.

Nhưng có hai cách nữa mà bạn có thể sử dụng để sao chép mảng.

  1. Bản sao nông
  2. Sao chép sâu

Bây giờ, hãy để nói về bản sao nông và sâu trong Python.

Bản sao nông trong Python

Một bản sao nông là & nbsp; một bản sao nhỏ của đối tượng. Nó có nghĩa là khi một đối tượng mới được tạo dựa trên đối tượng gốc, nó có một bản sao chính xác của các giá trị trong đối tượng gốc. Nếu bất kỳ giá trị nào của đối tượng là các tham chiếu đến các đối tượng khác, chỉ các địa chỉ tham chiếu được sao chép.a bit-wise copy of the object. It means that when a new object is created based on the original object, it has an exact copy of the values in the original object. If any of the object’s values are references to other objects, just the reference addresses are copied.

Quá trình sao chép không tạo ra các bản sao của chính các đối tượng con. Nhưng, trong trường hợp một bản sao nông của một đối tượng, một tham chiếu của đối tượng được sao chép vào một đối tượng khác. Nó có nghĩa là bất kỳ thay đổi nào được thực hiện đối với một bản sao của đối tượng đều phản ánh trong đối tượng gốc.

import numpy as np
arr = np.array([1, 2, 3, 4, 5])

# Printing the id of the array
print(id(arr))

# Shallow copy to copy array
arr2 = arr.view()

# Printing the id of the copied array
print(id(arr2))

# Changing the original array
arr[2] = 11

# Printing both arrays
print(arr)
print(arr2)

Đầu ra

4378519184
4378519280
[ 1 2 11 4 5]
[ 1 2 11 4 5]

Chúng tôi đã sao chép ARR2 từ ARR, nhưng cả hai đối tượng mảng đều có cùng tham chiếu. Vì vậy, khi bạn sửa đổi mảng ban đầu, thay đổi cũng sẽ áp dụng cho mảng được sao chép. Vì vậy, nếu bạn thay đổi ARR, ARR2 cũng sẽ thay đổi.

Nhưng có hai cách nữa mà bạn có thể sử dụng để sao chép mảng.

Bản sao nông

Sao chép sâu

Bây giờ, hãy để nói về bản sao nông và sâu trong Python.

Bản sao nông trong Pythonarray.copy() method. The array.copy() method does not take any argument because it is called on the original array and returns the deep copied array.

import numpy as np
arr = np.array([1, 2, 3, 4, 5])

# Printing the id of the array
print(id(arr))

# Deep copy using copy() method
arr2 = arr.copy()

# Printing the id of the copied array
print(id(arr2))

# Changing the original array
arr[2] = 11

# Printing both arrays
print(arr)
print(arr2)

Đầu ra

4301858448
4301858544
[ 1 2 11 4 5]
[1 2 3 4 5]

Chúng tôi đã sao chép ARR2 từ ARR, nhưng cả hai đối tượng mảng đều có cùng tham chiếu. Vì vậy, khi bạn sửa đổi mảng ban đầu, thay đổi cũng sẽ áp dụng cho mảng được sao chép. Vì vậy, nếu bạn thay đổi ARR, ARR2 cũng sẽ thay đổi.

Nhưng có hai cách nữa mà bạn có thể sử dụng để sao chép mảng.

Bản sao nông

Sao chép sâu

Bây giờ, hãy để nói về bản sao nông và sâu trong Python.