numpy数组的拼接

数组的拼接

一维数组的拼接使用concatenate()函数
a=np.array([1,2,3])
b=np.array([4,5,6])
c=np.concatenate((a,b),axis=0)    #默认情况下,axis=0可以不写
print(c)                          
#结果:[1 2 3 4 5 6],对于一维数组拼接,axis的值不影响最后的结果{因为:axis的值是用来决定哪个轴的,一维就一个轴,不像位二维有x轴y轴;所以一维没有axis=1的}


二维数组的拼接
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[7,8,9],[10,11,12]])
print(a)
#结果:
[[1 2 3]
 [4 5 6]]
 
print(b)
#结果:
[[ 7  8  9]
 [10 11 12]]


#使用hstack进行水平数组拼接,参数为序列{列表或元组}
c=np.hstack((a,b)) #或c=np.hstack([a,b])
print(c)
#结果:
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]


#使用vstack进行垂直数组拼接
d=np.vstack((a,b)) #或d=np.vstack([a,b])
print(d)
#结果:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]


numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下:
numpy.concatenate((a1, a2, ...), axis) 
参数说明: 
a1, a2, ...:相同类型的数组
axis:沿着它连接数组的轴,默认为0即相当于vstack垂直方向拼接;axis=1即相当于hstack水平方向拼接
e=np.concatenate((a,b),axis=0) #垂直方向拼接 相当于 vstack
print(e)
#结果:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

e1=np.concatenate((a,b))
print(e1)
#结果:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

e2=np.concatenate((a,b),axis=1) #水平方向拼接 相当于 hstack
print(e2)
#结果:
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]




三维数组的拼接
aa=np.arange(1,13).reshape(1,3,4)
print(aa)
#结果:
[[[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]]

bb=np.arange(101,113).reshape(1,3,4)
print(bb)
#结果:
[[[101 102 103 104]
  [105 106 107 108]
  [109 110 111 112]]]


三维数组有三个轴,分别对应axis=0,1,2
r1=np.concatenate((aa,bb),axis=0)
print(r1,r1.shape)   #axis=0,按照y轴,垂直方向拼接
#结果:
[[[  1   2   3   4]
  [  5   6   7   8]
  [  9  10  11  12]]

 [[101 102 103 104]
  [105 106 107 108]
  [109 110 111 112]]] 
  (2, 3, 4)



r2=np.concatenate((aa,bb),axis=1)
print(r2,r2.shape)  #axis=1,按照x轴,水平方向拼接
#结果:
[[[  1   2   3   4]
  [  5   6   7   8]
  [  9  10  11  12]
  [101 102 103 104]
  [105 106 107 108]
  [109 110 111 112]]] 
  (1, 6, 4)


r3=np.concatenate((aa,bb),axis=2)
print(r3,r3.shape)  #axis=2,按照z轴
#结果:
[[[  1   2   3   4 101 102 103 104]
  [  5   6   7   8 105 106 107 108]
  [  9  10  11  12 109 110 111 112]]] 
  (1, 3, 8)

注意:如果拼接的行和列数目不同,则会报错
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。