将一个数组分割(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')
 >>>