Numpy陣列拼接和分裂
阿新 • • 發佈:2021-12-17
將多個數組合併成一個,或將一個數組分裂成多個。
陣列拼接
concatenate([a1, a2, ...], axis=0, out=None) #預設沿axis = 0軸拼接,也可設定沿axis = 1軸拼接
hstack([a1, a2, ...]) #預設沿axis = 0軸拼接
vstack([a1, a2, ...]) #預設沿axis = 1軸拼接
In [41]: grid = np.array([[1,2,3],[4,5,6]]) #沿0軸合併 In [42]: np.concatenate([grid,grid]) Out[42]: array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]) In [45]: np.vstack([grid,grid]) Out[45]: array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]) #沿1軸合併 In [43]: np.concatenate([grid,grid],axis=1) Out[43]: array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]]) In [44]: np.hstack([grid,grid]) Out[44]: array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]])
陣列分裂
np.split(ary, indices_or_sections, axis=0) #預設沿axis = 0軸分割,也可設定沿axis = 1軸分割
hsplit([a1, a2, ...]) #預設沿axis = 0軸分割
vplit([a1, a2, ...]) #預設沿axis = 1軸分割
In [54]: grid = np.arange(16).reshape((4,4)) In [55]: grid Out[55]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) #沿0軸分割 In [56]: upper,lower = np.split(grid,[3]) In [57]: upper Out[57]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) In [58]: lower Out[58]: array([[12, 13, 14, 15]]) In [59]: upper,lower = np.vsplit(grid,[3]) In [60]: upper Out[60]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) In [61]: lower Out[61]: array([[12, 13, 14, 15]]) #沿1軸分割 In [62]: left,right = np.split(grid,[2],axis=1) In [63]: left Out[63]: array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]) In [64]: right Out[64]: array([[ 2, 3], [ 6, 7], [10, 11], [14, 15]]) In [65]: left,right = np.hsplit(grid,[2]) In [66]: left Out[66]: array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]) In [67]: right Out[67]: array([[ 2, 3], [ 6, 7], [10, 11], [14, 15]])