numpy数组切片之间的区别
Difference between slicing of a numpy array
所以,mat
是一个 NumPy 数组,我使用切片操作从数组创建不同的视图,不同的行如 row1, row2, row3
。
然后我尝试修改每一行,但为什么在 row3
的情况下我无法修改实际数组 mat
?
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
没有引用原始数组?
indexing operation you are doing on row3
is considered advanced_indexing,numpy 总是会在高级索引期间创建副本,在正常索引期间创建视图
所以,mat
是一个 NumPy 数组,我使用切片操作从数组创建不同的视图,不同的行如 row1, row2, row3
。
然后我尝试修改每一行,但为什么在 row3
的情况下我无法修改实际数组 mat
?
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
没有引用原始数组?
indexing operation you are doing on row3
is considered advanced_indexing,numpy 总是会在高级索引期间创建副本,在正常索引期间创建视图