NumPy Array Copy so với View


Sự khác biệt giữa sao chép và xem

Sự khác biệt chính giữa bản sao và dạng xem của một mảng là bản sao là một mảng mới và dạng xem chỉ là dạng xem của mảng ban đầu.

Bản sao sở hữu dữ liệu và bất kỳ thay đổi nào được thực hiện đối với bản sao sẽ không ảnh hưởng đến mảng gốc và bất kỳ thay đổi nào được thực hiện đối với mảng gốc sẽ không ảnh hưởng đến bản sao.

Chế độ xem không sở hữu dữ liệu và bất kỳ thay đổi nào được thực hiện đối với chế độ xem sẽ ảnh hưởng đến mảng ban đầu và bất kỳ thay đổi nào được thực hiện đối với mảng ban đầu sẽ ảnh hưởng đến chế độ xem.


BẢN SAO:

Thí dụ

Tạo bản sao, thay đổi mảng ban đầu và hiển thị cả hai mảng:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42

print(arr)
print(x)

Bản sao KHÔNG NÊN bị ảnh hưởng bởi những thay đổi được thực hiện đối với mảng ban đầu.


QUANG CẢNH:

Thí dụ

Tạo một dạng xem, thay đổi mảng ban đầu và hiển thị cả hai mảng:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42

print(arr)
print(x)

Chế độ xem NÊN bị ảnh hưởng bởi những thay đổi được thực hiện đối với mảng ban đầu.

Thực hiện các thay đổi trong chế độ XEM:

Thí dụ

Tạo một dạng xem, thay đổi dạng xem và hiển thị cả hai mảng:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31

print(arr)
print(x)

Mảng ban đầu NÊN bị ảnh hưởng bởi những thay đổi được thực hiện đối với chế độ xem.



Kiểm tra xem Mảng sở hữu Dữ liệu của nó hay không

Như đã đề cập ở trên, các bản sao sở hữu dữ liệu và các khung nhìn không sở hữu dữ liệu, nhưng làm thế nào chúng ta có thể kiểm tra điều này?

Mọi mảng NumPy đều có thuộc tính basetrả về Nonenếu mảng sở hữu dữ liệu.

Nếu không, base  thuộc tính tham chiếu đến đối tượng ban đầu.

Thí dụ

In giá trị của thuộc tính cơ sở để kiểm tra xem một mảng có sở hữu dữ liệu của nó hay không:

import numpy as np

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

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

Bản sao trả lại None.
Dạng xem trả về mảng ban đầu.


Kiểm tra bản thân với các bài tập

Bài tập:

Sử dụng phương pháp đúng để tạo bản sao của mảng.

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

x = arr.