Numpy数组的形状处理
改变数组的形状
可以通过多个函数改变数组的形状
import numpy as np
a = np.ones((3,4))
print(a.ravel()) #将数组转化为一维数组
'''
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
'''
a.shape=(6,2)
print(a)
'''
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 1.]])
'''
a.resize((6,2)) #等同于a.shape=(6,2)
其实,形状指定可以少一个值,因此可以把不指定的那个值设置为-1,例如:
a.resize((6,-1)) #由于数组a的元素个数为12,行为6,则列为2,等同于a.resize((6,2))
合并数组
合并数组有多种方法,例如:
import numpy as np
a=np.zeros((2,2))
b=np.ones((2,2))
print(np.vstack((a,b))) #垂直方向合并
'''
array([[ 0., 0.],
[ 0., 0.],
[ 1., 1.],
[ 1., 1.]])
'''
print(np.hstack((a,b))) #水平方向合并
'''
array([[ 0., 0., 1., 1.],
[ 0., 0., 1., 1.]])
'''
拆分数组
使用hsplit和vsplit,可以分别在垂直方向和水平方向拆分数组。
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(np.hsplit(a,3)) #沿水平方向拆分成3个形状相同的数组
'''
[array([[ 1],
[ 4],
[ 7],
[10]]), array([[ 2],
[ 5],
[ 8],
[11]]), array([[ 3],
[ 6],
[ 9],
[12]])]
'''
print(np.vsplit(a,2)) #沿垂直方向拆分成2个形状相同的数组
'''
[array([[1, 2, 3],
[4, 5, 6]]), array([[ 7, 8, 9],
[10, 11, 12]])]
'''示例代码:Numpy-array-shape.py