Làm thế nào để bạn tạo một bản sao sâu của một mảng trong python?

Một mảng có thể được sao chép sang một mảng khác bằng cách sử dụng toán tử gán “=”. Nhưng toán tử này không tạo một bản sao trùng lặp của mảng chính và chỉ tạo một tham chiếu của mảng ban đầu. Vì vậy, nếu bất kỳ giá trị nào được thay đổi thành mảng ban đầu thì nó cũng sẽ thay đổi giá trị của mảng được sao chép. Tạo một tệp Python với tập lệnh sau để kiểm tra việc sử dụng toán tử gán để sao chép một mảng

#Nhập mô-đun NumPy
nhập numpy as np .

#Create an array
array1 = np.mảng[[34. 5, 89. 34, 23. 6, 45. 72, 62. 87]]

#Sao chép mảng bằng toán tử '='
array2 < . 12 = array1

#Modify the 4th element of the main array
array1[3] = 10.12

in["Đầu ra sau khi sửa đổi mảng chính"]< . 34
#Display both arrays
print["The content of the main array", array1]
print["The content of the copied array", array2]

#Modify the 1st element of the copied array
array2[0] = 20.34

in[" \nThe output after modifying the copied array"]
#Display both arrays again
print["The content of the main array", array1]
print["The content of the copied array", array2]

Đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Đầu ra cho thấy những thay đổi trong mảng chính thay đổi trong mảng được sao chép và những thay đổi trong mảng được sao chép sẽ thay đổi trong mảng chính.

ví dụ 2. Sao chép một mảng bằng hàm copy[]

Sử dụng hàm copy[] là một cách khác để sao chép một mảng trong Python. Trong trường hợp này, một đối tượng mảng mới được tạo từ mảng ban đầu và kiểu sao chép này được gọi là bản sao sâu. Nếu bất kỳ giá trị nào được sửa đổi trong mảng gốc hoặc mảng được sao chép, thì nó không tạo ra bất kỳ thay đổi nào trên mảng khác. Cú pháp của hàm copy[] được đưa ra dưới đây

cú pháp

mảng2 = mảng1. bản sao[]

Phương thức copy[] không nhận bất kỳ đối số nào và nó trả về một mảng mới với các giá trị của mảng ban đầu

Tạo một tệp Python với tập lệnh sau sẽ sao chép một mảng NumPy bằng cách sử dụng hàm copy[]. Ở đây, giá trị của mảng ban đầu và mảng được sao chép đã được thay đổi trong tập lệnh

#Import mô-đun NumPy
nhập numpy as np< .

#Create an array
array1 = np.mảng[[67, . 45, 78, 12, 56, 51]]

#Copy the array using copy[] function
array2 = array1.bản sao[]

#Sửa đổi phần tử thứ 3 của mảng chính###########
array1[2] = 99

print["The output after modifying the main array"]
#Display both arrays
print["The content of the main array", array1]
print["The content of the copied array", array2]

#Modify the  6th element of the copied array
array2[5] = 0

print["\nThe output after modifying the copied array"]
#Display both arrays again
print["The content of the main array", array1]
print["The content of the copied array", array2]

Đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Đầu ra cho thấy rằng việc thay đổi trong mảng chính không làm thay đổi giá trị của mảng đã sao chép và việc thay đổi trong mảng đã sao chép không làm thay đổi giá trị của mảng chính.

ví dụ 3. Sao chép một mảng bằng hàm view[]

Sử dụng hàm view[] là một cách khác để sao chép một mảng trong Python. Nhưng chức năng này không tạo một bản sao trùng lặp của mảng chính và chỉ tạo một tham chiếu của mảng ban đầu. Vì vậy, nếu bất kỳ giá trị nào được thay đổi thành mảng ban đầu thì nó cũng sẽ thay đổi giá trị của mảng được sao chép. Kiểu sao chép này được gọi là sao chép nông. Cú pháp của hàm view[] được đưa ra dưới đây

cú pháp

mảng2 = mảng1. lượt xem[]

Tạo một tệp Python với tập lệnh sau sẽ sao chép một mảng NumPy bằng cách sử dụng hàm view[]. Ở đây, giá trị của mảng ban đầu và mảng được sao chép đã được thay đổi trong tập lệnh

#Import mô-đun NumPy
nhập numpy as np< .

#Create an array
array1 = np.mảng[[7, . 4, 7, 2, 1, 9]]

#Copy the array using view[] function
array2 = array1.view[]

#Modify the 1st element of the main arrayviewviewviewviewviewviewviewviewviewviewviewviewviewviewviewviewviewviewview
array1[0] = 11

print["The output after modifying the main array"]
#Display both arrays
print["The content of the main array", array1]
print["The content of the copied array", array2]

#Modify the  5th element of the copied array
array2[4] = 99

print["\nThe output after modifying the copied array"]
#Display both arrays again
print["The content of the main array", array1]
print["The content of the copied array", array2]

Đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Đầu ra cho thấy rằng việc thay đổi trong mảng chính sẽ thay đổi giá trị của mảng được sao chép và thay đổi trong mảng được sao chép sẽ thay đổi giá trị của mảng chính.

Ví dụ 4. Sao chép mảng bằng vòng lặp

Tạo một tệp Python với tập lệnh sau để biết cách sao chép một mảng mà không cần sử dụng bất kỳ hàm tích hợp hoặc toán tử gán nào. Bất kỳ vòng lặp nào cũng có thể được sử dụng để sao chép các giá trị của một mảng sang một mảng khác. Vòng lặp 'for' đã được sử dụng trong tập lệnh để sao chép một mảng sang một mảng khác

#Import mô-đun NumPy
nhập numpy as np< .

#Create an array
array1 = np.mảng[[11, . 22, 33, 44, 55, 66, 77, 88]]

#Create the second array with the size of first array
array2 = [None]*len[array1]

#Copying all elements of one array into another
for i in range[0, len[array1]]:
    mảng2 [ i ] = array1[i];

#Modify the 2nd element of the main array
array1[1] = 25

#Modify the 4th element of the copied array
array2[3] = 45

print["The output after modifying the first and second arrays"]
#Display both arrays
print["The content of the original array", array1]
print["The content of the copied array", array2]

Đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Đầu ra cho thấy rằng việc thay đổi trong mảng chính không làm thay đổi giá trị của mảng đã sao chép và việc thay đổi trong mảng đã sao chép không làm thay đổi giá trị của mảng chính.

Phần kết luận

Các cách sao chép mảng bằng cách sử dụng toán tử gán, hàm tích hợp và vòng lặp đã được trình bày trong hướng dẫn này. Toán tử gán và hàm view[] tạo một bản sao nông của mảng ban đầu và hàm copy[] và vòng lặp tạo một bản sao sâu của mảng ban đầu

Danh sách [] có tạo bản sao sâu không?

Bạn không tạo một bản sao sâu bằng list[] .

Chức năng sao chép sâu trong Python là gì?

Bản sao sâu xây dựng một đối tượng phức hợp mới và sau đó, theo cách đệ quy, chèn các bản sao của các đối tượng được tìm thấy trong bản gốc vào đó.

Chủ Đề