概述
本文介绍numpy合并数组
中文官方网址:
https://www.numpy.org.cn/reference/routines/array_manipulation_routines.html
主要有以下方法:
- np.concatenate()
- np.hstack()
- np.vstack()
concatenate()
语法
def concatenate((a1, a2, ...), axis)
参数说明:
- (a1, a2, …):a1,a2 类似数组类型,将这两个数组合并到一起
- axis:默认值是0。
- 如果a1,a2是一维数组,只能是0
- 如果a1,a2是二维数组:0表示按照行拼接,1表示按照列拼接
返回值
返回新数组,ndarray类型
一维数组
使用 concatenate() 函数只能在 0 轴上拼接,即水平方向拼接
import numpy as np
arr=np.array([1,2,3,4])
arr2=np.array([10,20,30,40])
print(arr)
print(arr2)
arr3=np.concatenate((arr,arr2))
print('-'*50)
print(arr3)
执行结果:
[ 1 2 3 4 10 20 30 40]
二维数组
axis为0时
import numpy as np
arr=np.array(range(6)).reshape(2,3)
arr2=np.array(range(10,16)).reshape(2,3)
print(arr)
print(arr2)
arr3=np.concatenate((arr,arr2),axis=0)
print('-'*50)
print(arr3)
执行结果:
[[ 0 1 2]
[ 3 4 5]
[10 11 12]
[13 14 15]]
相当于在垂直方向上合并数据
axis为1时
import numpy as np
arr=np.array(range(6)).reshape(2,3)
arr2=np.array(range(10,16)).reshape(2,3)
print(arr)
print(arr2)
arr3=np.concatenate((arr,arr2),axis=1)
print('-'*50)
print(arr3)
执行结果
[[ 0 1 2 10 11 12]
[ 3 4 5 13 14 15]]
相当于在水平方向上合并数据
hstack()
h是horizontal缩写,即水平,在 水平方向 上合并数据
相当于 concatenate() 函数的简化版
底层调用了concatenate()
- 当传入的数组是 一维数组 ,调用concatenate(arrs, 0)
- 当传入的数组是 二维数组,调用concatenate(arrs, 1)
语法
hstack(tup)
参数说明:
- tup:类似数组类型
返回值
返回新数组,ndarray类型
例子
import numpy as np
arr=np.array(range(6)).reshape(2,3)
arr2=np.array(range(10,16)).reshape(2,3)
print(arr)
print(arr2)
arr3=np.hstack((arr,arr2))
print('-'*50)
print(arr3)
执行结果如下:
[[ 0 1 2 10 11 12]
[ 3 4 5 13 14 15]]
vstack()
v是vertical缩写,在 垂直方向 上合并数据
语法
vstack(tup)
参数说明:
- tup:类似数组类型
返回值
返回新数组,ndarray类型
一维数组
import numpy as np
arr=np.array([1,2,3,4])
arr2=np.array([10,20,30,40])
print(arr)
print(arr2)
arr3=np.vstack((arr,arr2))
print('-'*50)
print(arr3)
执行结果:
[[ 1 2 3 4]
[10 20 30 40]]

2个一维数组合并成1个二维数组,新数组中第一行是第一个数组,第二行是第二个数组
二维数组
当传入的参数是二维数组时,相当于调用:
np.concatenate((arr,arr2),axis=0)
代码如下:
import numpy as np
arr=np.array(range(6)).reshape(2,3)
arr2=np.array(range(10,16)).reshape(2,3)
print(arr)
print(arr2)
arr3=np.vstack((arr,arr2))
print('-'*50)
print(arr3)
执行结果:
[[ 0 1 2]
[ 3 4 5]
[10 11 12]
[13 14 15]]
dstack()
d是depth缩写,按顺序深度合并数组
语法
dstack(tup)
参数说明:
- tup:类似数组类型
返回值
返回新数组,ndarray类型
一维数组
import numpy as np
arr=np.array([1,2,3,4])
arr2=np.array([10,20,30,40])
print(arr)
print(arr2)
arr3=np.dstack((arr,arr2))
print('-'*50)
print(arr3)
print(type(arr3),arr3.shape)
执行结果:
[[[ 1 10]
[ 2 20]
[ 3 30]
[ 4 40]]]
<class 'numpy.ndarray'> (1, 4, 2)
二维数组
import numpy as np
arr=np.array(range(6)).reshape(2,3)
arr2=np.array(range(10,16)).reshape(2,3)
print(arr)
print(arr2)
arr3=np.dstack((arr,arr2))
print('-'*50)
print(arr3)
print(type(arr3),arr3.shape)
执行结果如下:
[[[ 0 10]
[ 1 11]
[ 2 12]]
[[ 3 13]
[ 4 14]
[ 5 15]]]
<class 'numpy.ndarray'> (2, 3, 2)




