版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/PoGeN1/article/details/84298883
一、创建数据
导入模块并创建3
行4
列的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)