hsplit函数(col方向)
使用hsplit,通过指定要返回的相同shape的array的数量,或者通过指定分割应该发生之后的列来沿着其横轴拆分原array:
指定相同shape的array的数量来拆分原array:
import numpy as np
harr = np.floor(10 * np.random.random((2, 6)))
print(harr)
print(np.hsplit(harr, 3))
原array:
[[ 8. 5. 0. 2. 3. 8.]
[ 0. 2. 9. 5. 8. 2.]]
拆分后:
[array([[ 8., 5.],
[ 0., 2.]]), array([[ 0., 2.],
[ 9., 5.]]), array([[ 3., 8.],
[ 8., 2.]])]
指定分割应该发生之后的列来拆分原array
print(np.hsplit(harr, (2, 4, 5)))
拆分结果:
[array([[ 8., 5.],
[ 0., 2.]]), array([[ 0., 2.],
[ 9., 5.]]), array([[ 3.],
[ 8.]]), array([[ 8.],
[ 2.]])]
vsplit函数 (row方向)
vsplit沿着垂直轴分割,其分割方式与hsplit用法相同。
1、
varr = np.arange(16).reshape([4,4])
print(varr)
print(np.vsplit(varr, 2))
原array为:
array([[ 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]])]
2、
print(np.vsplit(varr, (2, 3)))
拆分结果:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]]), array([[12, 13, 14, 15]])]
array_split函数
hsplit和vsplit与array_split之间的唯一区别是array_split允许indices_or_sections是一个不等于轴的整数。 对于应该分成n个部分的长度为l的数组,它将返回l%n个大小为l // n + 1的子数组,其余大小为l // n。
x = np.arange(8.0)
np.array_split(x, 3)
原array为:
array([ 0., 1., 2., 3., 4., 5., 6., 7.])
拆分后:
[array([ 0., 1., 2.]), array([ 3., 4., 5.]), array([ 6., 7.])]
|