NumPy 數(shù)組分割

拆分是連接的反向操作。
連接(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

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])]
注意:用split() 方法,當(dāng)源數(shù)組中的元素較少用于拆分時(shí),它將不會調(diào)整元素,如上例那樣,array_split() 正常工作,但 split() 會失敗。

numpy.hsplit

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

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]])]
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清