所以,mat是一個 NumPy 陣列,我使用切片操作從陣列創建不同的視圖,不同的行為row1, row2, row3.
然后我嘗試修改每一行,但為什么我無法修改實際mat陣列row3?
mat = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row1 = mat[0, :] #[1 2 3 4]
row2 = mat[1:2, :] #[[5 6 7 8]]
row3 = mat[[2], :] #[[ 9 10 11 12]]
row1[0] = -1 #[-1 2 3 4]
row2[0,0] = -5 #[[-5 6 7 8]]
row3[0,0] = -9 # [[-9 10 11 12]]
print(mat)
這種情況下的輸出是
[[-1 2 3 4]
[-5 6 7 8]
[ 9 10 11 12]]
為什么row3不參考原始陣列?
uj5u.com熱心網友回復:
您正在執行的索引操作row3被認為是advanced_indexing,numpy 將始終在高級索引期間創建副本,并在正常索引期間創建視圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483016.html
下一篇:通過參考傳遞時找到陣列的最小值
