看《深度學(xué)習(xí)圖解》的第6章的代碼,前后對于矩陣的索引操作代碼略有區(qū)別。心中疑問重重,為何兩者都能工作。帶著疑問,網(wǎng)上查閱了一些資料,基本搞清楚兩種索引的不同。下面形成文檔,以便徹底學(xué)習(xí)numpy.array的相關(guān)用法(以二維數(shù)組為例)。
在python IDLE Shell 創(chuàng)建一個2維數(shù)組(6×3,6行3列,18個元素)
streetlights = np.array([[1, 0, 1],
[0, 1, 1],
[0, 0, 1],
[1, 1, 1],
[0, 1, 1],
[1, 0, 1]])
創(chuàng)建代碼:

取第一行:
方法1: streetlights[0]
方法2: streetlights[0:1] 或streetlight[0:1:1]或streetlight[0:1:1,:]
運行過程及結(jié)果如下圖所示,都能正確地讀取到第1行。但是,注意,方法1返回的是向量。方法2返回的是矩陣。

分析如下:
方法1采用“行索引”對數(shù)據(jù)進行選取,行號由0開始。我的理解是每行作為一個元組,存儲在一個一維數(shù)組里。其索引如同一維數(shù)據(jù)的索引類似。
方法2采用切片方式索引。語法是array[begin:end:step, begin:end:step]。演示代碼只關(guān)注行,列關(guān)鍵詞可以省略(默認為選中所有列數(shù)據(jù))。step默認為1,從begin開始取,但不包括end。

以下切片只取奇數(shù)行數(shù)據(jù),2表示隔行取數(shù)據(jù)(結(jié)果是矩陣)。

以下切片只取偶數(shù)行數(shù)據(jù)(結(jié)果是矩陣):

參考:
Fururur. 在python&numpy中切片(slice).https://www.cnblogs.com/Sinte-Beuve/p/6573246.html