Python数据处理之(八)Numpy array分割

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/PoGeN1/article/details/84298883

一、创建数据

导入模块并创建34列的Array

>>> import numpy as np
>>> A=np.arange(12).reshape((3,4))
>>> print(A)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

二、纵向分割

>>> print(np.split(A,2,axis=1))
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

三、横向分割

>>> print(np.split(A,3,axis=0))
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

四、错误的分割

例子中的Array是3行4列的,如果要分割必须要等量分割,否则报错。例如:下面这个按行分割就会报错:

>>> print(np.split(A,2,axis=0))
Traceback (most recent call last):
  File "D:\Users\hupo\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\lib\shape_base.py", line 778, in split
    len(indices_or_sections)
TypeError: object of type 'int' has no len()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#56>", line 1, in <module>
    print(np.split(A,2,axis=0))
  File "D:\Users\hupo\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\lib\shape_base.py", line 784, in split
    'array split does not result in an equal division')
ValueError: array split does not result in an equal division

五、不等量分割

为了解决上边的问题,可以采用下面这种不等量分割的方法:

>>> print(np.array_split(A,2,axis=0))
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

六、其他分割方法

numpy中还有np.vsplit()np.hsplit()方法可以用

>>> print(np.vsplit(A,3))
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
>>> print(np.hsplit(A,2))
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

np.vsplit(A,3)等价于np.split(A,3,axis=0)
np.hsplit(A,2)等价于np.split(A,2,axis=1)
下面这种表示更好理解:
横向分割:从左到右分割(hsplit,axis=1)
纵向分割:从上到下分割(vsplit,axis=0)

猜你喜欢

转载自blog.csdn.net/PoGeN1/article/details/84298883