将一个数组分割(split)成几个小数组
使用 hsplit
你能将数组沿着它的水平轴分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割:
>>> a = floor(10*random.random((2,12)))
>>> a
array([[ 8., 8., 3., 9., 0., 4., 3., 0., 0., 6., 4., 4.],
[ 0., 3., 2., 9., 6., 0., 4., 5., 7., 5., 1., 4.]])
>>> hsplit(a,3) # Split a into 3
[array([[ 8., 8., 3., 9.],
[ 0., 3., 2., 9.]]), array([[ 0., 4., 3., 0.],
[ 6., 0., 4., 5.]]), array([[ 0., 6., 4., 4.],
[ 7., 5., 1., 4.]])]
>>> hsplit(a,(3,4)) # Split a after the third and the fourth column
[array([[ 8., 8., 3.],
[ 0., 3., 2.]]), array([[ 9.],
[ 9.]]), array([[ 0., 4., 3., 0., 0., 6., 4., 4.],
[ 6., 0., 4., 5., 7., 5., 1., 4.]])]
vsplit
沿着纵向的轴分割, array split
允许指定沿哪个轴分割。
0
>>> a = floor(10*random.random((2,12)))
>>> a
array([[ 2., 1., 3., 3., 8., 3., 9., 5., 1., 3., 1., 8.],
[ 0., 4., 6., 2., 4., 6., 7., 4., 5., 8., 8., 8.]])
>>> hsplit(a,3)
File "<stdin>", line 1
hsplit(a,3)
^
IndentationError: unexpected indent
>>> hsplit(a,3)
[array([[ 2., 1., 3., 3.],
[ 0., 4., 6., 2.]]), array([[ 8., 3., 9., 5.],
[ 4., 6., 7., 4.]]), array([[ 1., 3., 1., 8.],
[ 5., 8., 8., 8.]])]
>>> a
array([[ 2., 1., 3., 3., 8., 3., 9., 5., 1., 3., 1., 8.],
[ 0., 4., 6., 2., 4., 6., 7., 4., 5., 8., 8., 8.]])
>>> b=hsplit(a,3)
>>> b
[array([[ 2., 1., 3., 3.],
[ 0., 4., 6., 2.]]), array([[ 8., 3., 9., 5.],
[ 4., 6., 7., 4.]]), array([[ 1., 3., 1., 8.],
[ 5., 8., 8., 8.]])]
>>> b.shape
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'shape'
>>> type(b)
<type 'list'>
>>> type(a)
<type 'numpy.ndarray'>
>>> a.dtype
dtype('float64')
>>>