在实践过程中,会经常遇到数组拼接的问题,基于numpy库concatenate是一个非常好用的数组操作函数。
1、concatenate((a1, a2, …), axis=0)官方文档详解
concatenate(...)concatenate((a1, a2, ...), axis=0)Join a sequence of arrays along an existing axis.Parameters----------a1, a2, ... : sequence of array_likeThe arrays must have the same shape, except in the dimensioncorresponding to `axis` (the first, by default).axis : int, optionalThe axis along which the arrays will be joined. Default is 0.Returns-------res : ndarrayThe concatenated array.See Also--------ma.concatenate : Concatenate function that preserves input masks.array_split : Split an array into multiple sub-arrays of equal ornear-equal size.split : Split array into a list of multiple sub-arrays of equal size.hsplit : Split array into multiple sub-arrays horizontally (column wise)vsplit : Split array into multiple sub-arrays vertically (row wise)dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).stack : Stack a sequence of arrays along a new axis.hstack : Stack arrays in sequence horizontally (column wise)vstack : Stack arrays in sequence vertically (row wise)dstack : Stack arrays in sequence depth wise (along third dimension)
2、Parameters参数
In [23]: a = np.array([[1, 2], [3, 4]])
In [24]: b = np.array([[5, 6]])
In [25]: np.concatenate((a, b), axis=0)
Out[25]:
array([[1, 2],[3, 4],[5, 6]])
传入的数组必须具有相同的形状,这里的相同的形状可以满足在拼接方向axis轴上数组间的形状一致即可
如果对数组对象进行 axis= 1 轴的拼接,方向是横向0轴,a是一个2*2维数组,axis= 0轴为2,b是一个1*2维数组,axis= 0 是1,两者的形状不等,这时会报错
In [27]: np.concatenate((a,b),axis = 1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in ()
----> 1 np.concatenate((a,b),axis = 1)ValueError: all the input array dimensions except for the concatenation axis must match exactly
将b进行转置,得到b为2*1维数组:
In [28]: np.concatenate((a,b.T),axis = 1)
Out[28]:
array([[1, 2, 5],[3, 4, 6]])