np.stack函式

weixin_33890499發表於2018-07-16

1. 當axis = 0時,

x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))

y2 = np.stack((x1,x2),axis=0)

輸出:
    [[[ 0  1  2]
      [ 3  4  5]
      [ 6  7  8]]

     [[10 11 12]
      [13 14 15]
      [16 17 18]]]
    
    'y2.shape': (2,3,3)

np.stack的官方解釋為 對指定axis增加維度,
我們發現y2.shape為(2,3,3),注意x1.shape為(3,3)也可以看做(1,3,3),
當給x1的axis = 0也就是第一維增加一維後就變成了(2,3,3),這剛好是y2.shape,
那x1增加的這個維度的內容用什麼來填充呢?當然是x2了!(所以,也要明白的就是x1和x2的shape一定要相同)

2.當axis = 1時,

x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))

y2 = np.stack((x1,x2),axis=1)

輸出:
    [[[ 0  1  2]
      [10 11 12]]

     [[ 3  4  5]
      [13 14 15]]

     [[ 6  7  8]
      [16 17 18]]]
    
    'y2.shape': (3,2,3)

當axis = 1時,對二維平面的行進行增加,所以本來應該是1行的,經過x2填充變成了2行。

3.同理,當axis = 2時,

x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))

y2 = np.stack((x1,x2),axis=1)

輸出:
    [[[ 0 10]
      [ 1 11]
      [ 2 12]]

     [[ 3 13]
      [ 4 14]
      [ 5 15]]

     [[ 6 16]
      [ 7 17]
      [ 8 18]]]
    
    'y2.shape':(3,3,2)

相關文章