分割數組
函數 | 數組及操作 |
---|---|
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