1、concatenate() 连接 NumPy 数组
concatenate 表示“拼接 / 连接”。
作用是:
将多个数组沿指定轴(axis)进行连接
📌 类似 SQL 的 JOIN,但 NumPy 是 按轴拼接,不是按键。
语法
np.concatenate((arr1, arr2, ...), axis=0)
参数说明:
传入数组序列
axis指定拼接方向默认
axis=0
示例 1:连接两个一维数组
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr = np.concatenate((arr1, arr2)) print(arr)
输出:
[1 2 3 4 5 6]
示例 2:连接二维数组(按列)
import numpy as np
arr1 = np.array([[1, 2],
[3, 4]])
arr2 = np.array([[5, 6],
[7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr)输出:
[[1 2 5 6] [3 4 7 8]]
说明:
axis=1→ 按列拼接列数增加
axis 含义速记
| axis | 含义 | 结果变化 |
|---|---|---|
| 0 | 按行拼接 | 行数增加 |
| 1 | 按列拼接 | 列数增加 |
2、使用 stack() 连接数组
stack() 与 concatenate() 类似,但有一个关键区别:
stack 是沿“新轴”连接
也就是说:
concatenate:在现有维度拼接
stack:增加一个新维度
语法
np.stack((arr1, arr2), axis=0)
示例:stack 两个一维数组
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr = np.stack((arr1, arr2), axis=1) print(arr)
输出:
[[1 4] [2 5] [3 6]]
说明:
原 shape:
(3,)stack 后:
(3,2)新增了一个维度
3、使用 hstack()(水平堆叠)
hstack() 是 stack() 的辅助函数。
作用是:
沿水平方向(列方向)堆叠数组
示例
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr = np.hstack((arr1, arr2)) print(arr)
输出:
[1 2 3 4 5 6]
对二维数组的效果
arr = np.hstack((
[[1, 2]],
[[3, 4]]
))结果:
[[1 2 3 4]]
4、使用 vstack()(垂直堆叠)
vstack() 表示:
沿垂直方向(行方向)堆叠数组
示例
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr = np.vstack((arr1, arr2)) print(arr)
输出:
[[1 2 3] [4 5 6]]
说明:
一维数组被提升为二维
按行叠加
5、使用 dstack()(深度堆叠)
dstack() 表示:
沿第三维(depth / height)堆叠
适用于构建 三维数组。
示例
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr = np.dstack((arr1, arr2)) print(arr)
输出:
[[[1 4] [2 5] [3 6]]]
说明:
shape 从
(3,)→(1,3,2)新增深度维度
6、函数对比总结
| 函数 | 是否新增维度 | 拼接方向 |
|---|---|---|
| concatenate | 否 | 指定 axis |
| stack | 是 | 指定 axis |
| hstack | 否 | 水平(列) |
| vstack | 否 | 垂直(行) |
| dstack | 是 | 深度(第3维) |
7、常见报错与注意事项 ⚠️
1️⃣ 维度必须匹配
ValueError: all the input array dimensions exceptfor the concatenation axis must match
例如:
按列拼接 → 行数必须相同
按行拼接 → 列数必须相同
2️⃣ 一维 vs 二维拼接差异
np.hstack([a, b]) # 一维直接拼 np.vstack([a, b]) # 会升维
3️⃣ stack 必须 shape 完全一致
否则报错:
ValueError: all input arrays must have the same shape