Rate this post

Copy của mảng đầu vào được lưu trữ vật lý tại một số vị trí khác và nội dung được lưu trữ tại vị trí cụ thể đó được trả về, đây là bản sao của mảng đầu vào trong khi chế độ xem khác nhau của cùng một vị trí bộ nhớ được trả về trong trường hợp xem.

Các bài viết liên quan:

Trong phần này của hướng dẫn, chúng ta sẽ xem xét cách thức mà các bản sao và chế độ xem khác nhau được tạo từ một số vị trí bộ nhớ.

Array Assignment

Việc gán một mảng numpy cho một mảng khác không tạo ra bản sao trực tiếp của mảng ban đầu, thay vào đó, nó tạo ra một mảng khác có cùng nội dung và cùng id. Nó đại diện cho tham chiếu đến mảng ban đầu. Các thay đổi được thực hiện trên tham chiếu này cũng được phản ánh trong mảng ban đầu.

Hàm id () trả về giá trị nhận dạng phổ quát của mảng tương tự như con trỏ trong C.

Hãy xem xét ví dụ sau.

Thí dụ

import numpy as np  
  
a = np.array([[1,2,3,4],[9,0,2,3],[1,2,3,19]])  
  
print("Original Array:\n",a)  
  
print("\nID of array a:",id(a))  
  
b = a   
  
print("\nmaking copy of the array a")  
  
print("\nID of b:",id(b))  
  
b.shape = 4,3;  
  
print("\nChanges on b also reflect to a:")  
print(a)  

Output:

Phương thức ndarray.view ()

Phương thức ndarray.view () trả về đối tượng mảng mới chứa cùng nội dung như mảng ban đầu. Vì nó là một đối tượng mảng mới, các thay đổi được thực hiện trên đối tượng này không phản ánh mảng ban đầu.

Hãy xem xét ví dụ sau.

Thí dụ

import numpy as np  
  
a = np.array([[1,2,3,4],[9,0,2,3],[1,2,3,19]])  
  
print("Original Array:\n",a)  
  
print("\nID of array a:",id(a))  
  
b = a.view()  
  
print("\nID of b:",id(b))  
  
print("\nprinting the view b")  
print(b)  
  
b.shape = 4,3;  
  
print("\nChanges made to the view b do not reflect a")  
print("\nOriginal array \n",a)  
print("\nview\n",b)  

Output:

Phương thức ndarray.copy ()

Nó trả về bản sao sâu của mảng ban đầu không chia sẻ bất kỳ bộ nhớ nào với mảng ban đầu. Sửa đổi được thực hiện đối với bản sao sâu của mảng gốc không phản ánh mảng ban đầu.

Hãy xem xét ví dụ sau.

Thí dụ

import numpy as np  
  
a = np.array([[1,2,3,4],[9,0,2,3],[1,2,3,19]])  
  
print("Original Array:\n",a)  
  
print("\nID of array a:",id(a))  
  
b = a.copy()  
  
print("\nID of b:",id(b))  
  
print("\nprinting the deep copy b")  
print(b)  
  
b.shape = 4,3;  
  
print("\nChanges made to the copy b do not reflect a")  
print("\nOriginal array \n",a)  
print("\nCopy\n",b)  

Output:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now