關於 Numpy 數組切片 [:, idnex] 的理解

記錄一下numpy數組的切片操作和理解

import numpy as np

先看二維數組

a = np.array(range(9)).reshape(3, 3)
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

a[:, 0]
array([0, 3, 6])

a[:, 1]
array([1, 4, 7])

a[:, 2]
array([2, 5, 8])

再看三維數組

b = np.array(range(1, 25)).reshape(2, 3, 4)
array([[[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]],
        
       [[13, 14, 15, 16],
        [17, 18, 19, 20],
        [21, 22, 23, 24]]])
        
b[:, 0]
array([[ 1,  2,  3,  4],
       [13, 14, 15, 16]])

b[:, 1]
array([[ 5,  6,  7,  8],
       [17, 18, 19, 20]])
       
b[:, 2]
array([[ 9, 10, 11, 12],
       [21, 22, 23, 24]])

接着看四維數組

c = b.reshape(2, 3, 2, 2)
array([[[[ 1,  2],
         [ 3,  4]],
        [[ 5,  6],
         [ 7,  8]],
        [[ 9, 10],
         [11, 12]]],
         
       [[[13, 14],
         [15, 16]],
        [[17, 18],
         [19, 20]],
        [[21, 22],
         [23, 24]]]])
c[:, 0]
array([[[ 1,  2],
        [ 3,  4]],
        
       [[13, 14],
        [15, 16]]])

c[:, 1]
array([[[ 5,  6],
        [ 7,  8]],
        
       [[17, 18],
        [19, 20]]])

c[:, 2]
array([[[ 9, 10],
        [11, 12]],
        
       [[21, 22],
        [23, 24]]])

很簡單,就是把第一維裏所有子數組,按照指定下標提取出來,放進一個空數組中

c[:,-1,:]
array([[[ 9, 10],
        [11, 12]],
        
       [[21, 22],
        [23, 24]]])

c[:,-1,-1]
array([[11, 12],
       [23, 24]])

不難發現,如果再在後面進行切片,理解和上面的一樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章