数组的拼接
一维数组的拼接使用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)
注意:如果拼接的行和列数目不同,则会报错