本文介绍numpy的array分割方式
Demo.py
import numpy as np
A = np.arange(12).reshape((3, 4))
print A
#纵向分割
print(np.split(A, 2, axis=1))
#横向分割
print(np.split(A, 3, axis=0))
#错误的分割
#print(np.split(A, 3, axis=1))
# ValueError: array split does not result in an equal division
#为了解决这种情况, 我们会有下面这种方式.
#不等量的分割
#在机器学习时经常会需要将数据做不等量的分割,因此解决办法为np.array_split()
print(np.array_split(A, 3, axis=1))
#其他的分割方式
#在Numpy里还有np.vsplit()与横np.hsplit()方式可用
print(np.vsplit(A, 3)) #横向分割 等于 print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.hsplit(A, 2)) #纵向分割 等于 print(np.split(A, 2, axis=1))
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]