拆分是連接的反向操作。
連接(Joining)是將多個(gè)數(shù)組合并為一個(gè),拆分(Spliting)將一個(gè)數(shù)組拆分為多個(gè)。
數(shù)組分割的基本函數(shù)如下:
函數(shù) | 數(shù)組及操作 |
split | 將一個(gè)數(shù)組分割為多個(gè)子數(shù)組 |
hsplit | 將一個(gè)數(shù)組水平分割為多個(gè)子數(shù)組(按列) |
vsplit | 將一個(gè)數(shù)組垂直分割為多個(gè)子數(shù)組(按行) |
numpy.split 函數(shù)沿特定的軸將數(shù)組分割為子數(shù)組,格式如下:
numpy.split(ary, indices_or_sections, axis)
參數(shù)說明:
ary:被分割的數(shù)組indices_or_sections:果是一個(gè)整數(shù),就用該數(shù)平均切分,如果是一個(gè)數(shù)組,為沿軸切分的位置(左開右閉) axis:沿著哪個(gè)維度進(jìn)行切向,默認(rèn)為0,橫向切分。為1時(shí),縱向切分
import numpy as np a = np.arange(15) print ('第一個(gè)數(shù)組:') print (a) print ('\n') print ('將數(shù)組分為三個(gè)大小相等的子數(shù)組:') b = np.split(a,5) print (b) print ('\n') print ('將數(shù)組在一維數(shù)組中表明的位置分割:') b = np.split(a,[4,7]) print (b)
輸出結(jié)果為:
第一個(gè)數(shù)組: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] 將數(shù)組分為三個(gè)大小相等的子數(shù)組: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10, 11]), array([12, 13, 14])] 將數(shù)組在一維數(shù)組中表明的位置分割: [array([0, 1, 2, 3]), array([4, 5, 6]), array([ 7, 8, 9, 10, 11, 12, 13, 14])]
當(dāng)數(shù)組中的元素少于要求的數(shù)量,需要用array_split函數(shù)它將從末尾進(jìn)行相應(yīng)調(diào)整。
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) newarr = np.array_split(arr, 4) print(newarr)
輸出結(jié)果為:
[array([1, 2]), array([3, 4]), array([5]), array([6])]
numpy.hsplit 函數(shù)用于水平分割數(shù)組,通過指定要返回的相同形狀的數(shù)組數(shù)量來拆分原數(shù)組。
import numpy as np harr = np.floor(10 * np.random.random((2, 8))) print ('原array:') print(harr) print ('拆分后:') print(np.hsplit(harr, 4))
輸出結(jié)果為:
原array: [[7. 9. 2. 6. 8. 7. 4. 5.] [2. 5. 3. 5. 9. 4. 1. 3.]] 拆分后: [array([[7., 9.], [2., 5.]]), array([[2., 6.], [3., 5.]]), array([[8., 7.], [9., 4.]]), array([[4., 5.], [1., 3.]])]
numpy.vsplit 沿著垂直軸分割,其分割方式與hsplit用法相同。
import numpy as np a = np.arange(16).reshape(4,4) print ('第一個(gè)數(shù)組:') print (a) print ('\n') print ('豎直分割:') b = np.vsplit(a,2) print (b)
輸出結(jié)果為:
第一個(gè)數(shù)組: [[ 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]])]