NumPy 陣列的複製與檢視
複製與檢視的區別
複製與檢視的主要區別在於,複製是一個全新的陣列,而檢視只是原始陣列的一個檢視。
複製擁有資料,對複製的任何修改都不會影響原始陣列,對原始陣列的任何修改也不會影響複製。
檢視不擁有資料,對檢視的任何修改都會影響原始陣列,對原始陣列的任何修改也會影響檢視。
複製 (COPY)
示例
製作一個副本,修改原始陣列,然後顯示兩個陣列
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
自己動手試一試 »
副本不應該受到原始陣列更改的影響。
檢視 (VIEW)
示例
製作一個檢視,修改原始陣列,然後顯示兩個陣列
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr)
print(x)
自己動手試一試 »
檢視應該受到原始陣列更改的影響。
修改檢視
示例
製作一個檢視,修改檢視,然後顯示兩個陣列
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr)
print(x)
自己動手試一試 »
原始陣列應該受到檢視更改的影響。
檢查陣列是否擁有其資料
如上所述,副本擁有資料,而檢視不擁有資料,但我們如何檢查這一點呢?
每個 NumPy 陣列都有一個名為 base
的屬性,如果陣列擁有資料,則返回 None
。
否則,base
屬性指向原始物件。
示例
列印 base
屬性的值,以檢查陣列是否擁有其資料
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
自己動手試一試 »
副本返回 None
。
檢視返回原始陣列。