Python的numpy數(shù)組的行索引與切片的區(qū)別

看《深度學(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)建代碼:

創(chuàng)建數(shù)組

取第一行:

  • 方法1: streetlights[0]

  • 方法2: streetlights[0:1] 或streetlight[0:1:1]或streetlight[0:1:1,:]

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

image.png

分析如下:

  1. 方法1采用“行索引”對數(shù)據(jù)進行選取,行號由0開始。我的理解是每行作為一個元組,存儲在一個一維數(shù)組里。其索引如同一維數(shù)據(jù)的索引類似。

  2. 方法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ù)行(結(jié)果是矩陣)

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

讀偶數(shù)行(結(jié)果是矩陣)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容