乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【NumPy學(xué)習(xí)指南】day4 多維數(shù)組的切片和索引

       qweertt4747 2018-03-30

      ndarray支持在多維數(shù)組上的切片操作。為了方便起見,我們可以用一個(gè)省略號(hào)(...)來

      表示遍歷剩下的維度。

      (1)舉例來說,我們先用arange函數(shù)創(chuàng)建一個(gè)數(shù)組并改變其維度,使之變成一個(gè)三維數(shù)組:

      >>>b=np.arange(24).reshape(2,3,4)

      >>> b.shape

      (2L, 3L, 4L)

      >>> b

      array([[[ 0,  1, 2,  3],

              [ 4, 5,  6,  7],

              [ 8, 9, 10, 11]],

             [[12, 13, 14, 15],

              [16, 17, 18, 19],

              [20, 21, 22, 23]]])

      多維數(shù)組b中有0~23的整數(shù),共24個(gè)元素,是一個(gè)2×3×4的三維數(shù)組。我們可以形象地把它看做一個(gè)兩層樓建筑,每層樓有12個(gè)房間,并排列成3行4列?;蛘?,我們也可以將其看成是電子表格中工作表(sheet)、行和列的關(guān)系。你可能已經(jīng)猜到,reshape函數(shù)的作用是改變數(shù)組的“形狀”,也就是改變數(shù)組的維度,其參數(shù)為一個(gè)正整數(shù)元組,分別指定數(shù)組在每個(gè)維度上的大小。如果指定的維度和數(shù)組的元素?cái)?shù)目不相吻合,函數(shù)將拋出異常。

      (2)我們可以用三維坐標(biāo)來選定任意一個(gè)房間,即樓層、行號(hào)和列號(hào)。例如,選定第1層樓、第1行、第1列的房間(也可以說是第0層樓、第0行、第0列,這只是習(xí)慣問題),可以這樣表示:

      >>>b[0,0,0]

      0

      (3)如果我們不關(guān)心樓層,也就是說要選取所有樓層的第1行、第1列的房間,那么可以將第1個(gè)下標(biāo)用英文標(biāo)點(diǎn)的冒號(hào):來代替:

      >>>b[:,0,0]

      array([0, 12])

      >>>b[0]

      array([[0,  1, 2,  3],

             [ 4, 5,  6,  7],

             [ 8, 9, 10, 11]])

      我們還可以這樣寫,選取第1層樓的所有房間:

      >>>b[0,:,:]

      array([[0,  1, 2,  3],

             [ 4, 5,  6,  7],

             [ 8, 9, 10, 11]])

      多個(gè)冒號(hào)可以用一個(gè)省略號(hào)(...)來代替,因此上面的代碼等價(jià)于:

      >>>b[0,...]

      array([[0,  1, 2,  3],

             [ 4, 5,  6,  7],

             [ 8, 9, 10, 11]])

      進(jìn)而可以選取第1層樓、第2排的所有房間:

      >>>b[0,1]

      array([4,5, 6, 7])

      (4) 再進(jìn)一步,我們可以在上面的數(shù)組切片中間隔地選定元素:

      >>>b[0,1,::2]

      array([4,6])

      (5) 如果要選取所有樓層的位于第2列的房間,即不指定樓層和行號(hào),用如下代碼即可:

      >>>b[...,1]

      array([[1,  5, 9],

             [13, 17, 21]])

      類似地,我們可以選取所有位于第2行的房間,而不指定樓層和列號(hào):

      >>>b[:,1]

      array([[4,  5, 6,  7],

             [16, 17, 18, 19]])

      如果要選取第1層樓的所有位于第2列的房間,在對(duì)應(yīng)的兩個(gè)維度上指定即可:

      >>>b[0,:,1]

      array([1,5, 9])

      (6)如果要選取第1層樓的最后一列的所有房間,使用如下代碼:

      >>>b[0,:,-1]

      array([3,  7, 11])

      如果要反向選取第1層樓的最后一列的所有房間,使用如下代碼:

      >>>b[0,::-1,-1]

      array([11,  7,  3])

      在該數(shù)組切片中間隔地選定元素:

      >>>b[0,::2,-1]

      array([3, 11])

      如果在多維數(shù)組中執(zhí)行翻轉(zhuǎn)一維數(shù)組的命令,將在最前面的維度上翻轉(zhuǎn)元素的順序,在我們

      的例子中將把第1層樓和第2層樓的房間交換:

      >>>b[::-1]

      array([[[12,13, 14, 15],

              [16, 17, 18, 19],

              [20, 21, 22, 23]],

             [[ 0, 1,  2,  3],

              [ 4, 5,  6,  7],

              [ 8, 9, 10, 11]]])

      剛才做了些什么

      我們用各種方法對(duì)一個(gè)NumPy多維數(shù)組進(jìn)行了切片操作。




        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多