1. 程式人生 > >Numpy 中陣列的分割

Numpy 中陣列的分割

來自 《Python資料分析基礎教程:Numpy 學習指南(第2版)》

    下面要介紹的陣列分割方法有:

  • 水平分割
  • 垂直分割
  • 深度分割

    0. 建立一個數組

a = arange(9).reshape(3,3)
print(a)

    1. 水平分割

    下面的程式碼將把陣列沿著水平方向分割為3個相同大小的子陣列:

b = hsplit(a,3)
print(b)

    或者呼叫split函式並在引數中指定引數axis=1

b = split(a, 3, axis=1)
print(b)    

    得到結果

[array([[0],
       [3],
       [6]]),
 array([[1],
       [4],
       [7]]), 
 array([[2],
       [5],
       [8]])]

    2.垂直分割

    下面的程式碼將把陣列沿著垂直方向分割為3個相同大小的子陣列:

b = vsplit(a,3)
print(b)

    或者呼叫split函式並在引數中指定引數axis=1

b = split(a, 3, axis=0)
print(b)   

    得到結果

[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

    3.深度分割

    先建立一個三維陣列:

a = arange(27).reshape(3,3,3)
print(a)
[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]]

 [[ 9 10 11]
  [12 13 14]
  [15 16 17]]

 [[18 19 20]
  [21 22 23]
  [24 25 26]]]

    呼叫dsplit函式按深度方向分割陣列

b = dsplit(a,3)
print(b)

    得到結果

[array([[[ 0],
        [ 3],
        [ 6]],

       [[ 9],
        [12],
        [15]],

       [[18],
        [21],
        [24]]]),
 array([[[ 1],
        [ 4],
        [ 7]],

       [[10],
        [13],
        [16]],

       [[19],
        [22],
        [25]]]),
 array([[[ 2],
        [ 5],
        [ 8]],

       [[11],
        [14],
        [17]],

       [[20],
        [23],
        [26]]])]