天天看點

numpy分割數組分割數組

分割數組

import numpy as np

a = np.arange(24).reshape(2,3,4)
b = np.arange(24).reshape(3,8)
print(a)
print(b)
           
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 11 12 13 14 15]
 [16 17 18 19 20 21 22 23]]
           

水準分割

  • hsplit
# 把數組沿着水準方向分割為3個相同大小的子數組,如果分割為2的話會報錯
print(np.hsplit(a,3))
           
[array([[[ 0,  1,  2,  3]],

       [[12, 13, 14, 15]]]), array([[[ 4,  5,  6,  7]],

       [[16, 17, 18, 19]]]), array([[[ 8,  9, 10, 11]],

       [[20, 21, 22, 23]]])]
           
[array([[ 0,  1,  2,  3],
       [ 8,  9, 10, 11],
       [16, 17, 18, 19]]), array([[ 4,  5,  6,  7],
       [12, 13, 14, 15],
       [20, 21, 22, 23]])]
           
  • split 指定參數axis=1
[array([[[ 0,  1,  2,  3]],

       [[12, 13, 14, 15]]]), array([[[ 4,  5,  6,  7]],

       [[16, 17, 18, 19]]]), array([[[ 8,  9, 10, 11]],

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

垂直分割

  • vsplit
[array([[0, 1, 2, 3, 4, 5, 6, 7]]), array([[ 8,  9, 10, 11, 12, 13, 14, 15]]), array([[16, 17, 18, 19, 20, 21, 22, 23]])]
           
  • splite
[array([[0, 1, 2, 3, 4, 5, 6, 7]]), array([[ 8,  9, 10, 11, 12, 13, 14, 15]]), array([[16, 17, 18, 19, 20, 21, 22, 23]])]
           

深度分割

  • dsplit
[array([[[ 0,  1],
        [ 4,  5],
        [ 8,  9]],

       [[12, 13],
        [16, 17],
        [20, 21]]]), array([[[ 2,  3],
        [ 6,  7],
        [10, 11]],

       [[14, 15],
        [18, 19],
        [22, 23]]])]