Python numpy 入門系列 15 數組操作(分割數組)


分割數組

函數 數組及操作
split 將一個數組分割為多個子數組
hsplit 將一個數組水平分割為多個子數組(按列)
vsplit 將一個數組垂直分割為多個子數組(按行)

numpy.split

numpy.split 函數沿特定的軸將數組分割為子數組,格式如下:

numpy.split(ary, indices_or_sections, axis)

參數說明:

  • ary:被分割的數組
  • indices_or_sections:如果是一個整數,就用該數平均切分,如果是一個數組,為沿軸切分的位置(左開右閉)
  • axis:設置沿着哪個方向進行切分,默認為 0,橫向切分,即水平方向。為 1 時,縱向切分,即豎直方向。

實例

import numpy as np a = np.arange(9) print ('第一個數組:') print (a) print ('\n') print ('將數組分為三個大小相等的子數組:') b = np.split(a,3) print (b) print ('\n') print ('將數組在一維數組中表明的位置分割:') b = np.split(a,[4,7]) print (b)

 輸出結果為:

第一個數組: [0 1 2 3 4 5 6 7 8] 將數組分為三個大小相等的子數組: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])] 將數組在一維數組中表明的位置分割: [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]

axis 為 0 時在水平方向分割,axis 為 1 時在垂直方向分割:

實例

import numpy as np a = np.arange(16).reshape(4, 4) print('第一個數組:') print(a) print('\n') print('默認分割(0軸):') b = np.split(a,2) print(b) print('\n') print('沿水平方向分割:') c = np.split(a,2,1) print(c) print('\n') print('沿水平方向分割:') d= np.hsplit(a,2) print(d)

 輸出結果為:

第一個數組: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] 默認分割(0軸): [array([[0, 1, 2, 3], [4, 5, 6, 7]]), array([[ 8, 9, 10, 11], [12, 13, 14, 15]])] 沿水平方向分割: [array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]), array([[ 2, 3], [ 6, 7], [10, 11], [14, 15]])] 沿水平方向分割: [array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]), array([[ 2, 3], [ 6, 7], [10, 11], [14, 15]])]

numpy.hsplit

numpy.hsplit 函數用於水平分割數組,通過指定要返回的相同形狀的數組數量來拆分原數組。

實例

import numpy as np harr = np.floor(10 * np.random.random((2, 6))) print ('原array:') print(harr) print ('拆分后:') print(np.hsplit(harr, 3))

 輸出結果為:

array [[4. 7. 6. 3. 2. 6.] [6. 3. 6. 7. 9. 7.]] 拆分后: [array([[4., 7.], [6., 3.]]), array([[6., 3.], [6., 7.]]), array([[2., 6.], [9., 7.]])]

numpy.vsplit

numpy.vsplit 沿着垂直軸分割,其分割方式與hsplit用法相同。

實例

import numpy as np a = np.arange(16).reshape(4,4) print ('第一個數組:') print (a) print ('\n') print ('豎直分割:') b = np.vsplit(a,2) print (b)

 輸出結果為:

第一個數組: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] 豎直分割: [array([[0, 1, 2, 3], [4, 5, 6, 7]]), array([[ 8, 9, 10, 11], [12, 13, 14, 15]])]

REF

https://www.cnblogs.com/mzct123/p/8659193.html  (numpy flatten ravel)
https://blog.csdn.net/weixin_43960668/article/details/114979389 (numpy flatten ravel)

https://www.runoob.com/numpy/numpy-array-manipulation.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM