关于 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]])

不难发现,如果再在后面进行切片,理解和上面的一样

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