通過索引得到的是原數組降低維度的內容,通過切片得到的是原數組維度的部分內容。
arr2d = np.array([[1,2,3],[4,5,6]]) 這是一個Numpy的二維數組
利用索引,獲得arr2d中的內容:
arr2d[0]是[1,2,3],是一個一維數組,比arr2d二維數組降低了一個維度
arr2d[1]是[4,5,6],是一個一維數組,比arr2d二維數組降低了一個維度
arr2d[0,1],獲得2。可以將其看爲兩步,首先是arr2d[0]獲得降低一個維度的一維數組[1,2,3],然後再對一維數組[1,2,3]進行索引操作,得到一個數字2,從一維降到沒有維度概念了,一個標量。
利用切片,獲得arr2d中的內容:
切片總是按照軸進行的,對於二維數組來說,先切0軸,再切1軸:
0軸是豎着的,所以切的時候只能“橫着切”,1軸是橫着的,所以切的時候只能“豎着切”。
arr2d[1:] 對arr2d橫向切出[[4,5,6]],是一個二維數組,與arr2d的維度一致
arr2d[1: , :2] 是一個連續切片操作,先橫着切0軸,切出[[4,5,6]],再豎着切1軸,切出[[4,5]],維度始終保持不變。
如果想得到降維的切片怎麼辦呢?就需要使用切片索引。
切片索引的本質還是切片,看上去就像混合使用了切片和索引,達到獲得降維切片的目的。
arr2d[1,:2] 切片索引還是按照切片的方式來操作,第一次橫切出降維的[4,5,6],再在一維數組上切出保持維度的[4,5]
arr2d[:1,2] 第一次橫切出不降維的[[1,2,3]],第二次豎切出降維的[3]
arr2d[:2,1] 第一次橫切出部將爲的[[1,2,3],[4,5,6]],第二次豎切出降維的[2,5]