np.concatenate 是 NumPy 中最核心的数组拼接函数,用于沿着指定的轴将多个同维度的 NumPy 数组拼接成一个数组,是数据合并、维度拼接的常用工具。
一、核心语法
numpy.concatenate(
(a1, a2, ...), # 要拼接的数组序列,必须是元组/列表形式
axis=0, # 拼接的轴方向,默认 axis=0(行/第一个维度)
out=None # 可选,指定输出数组的存储位置
)关键参数说明
(a1, a2, ...):必填,传入需要拼接的多个 NumPy 数组,必须用**元组()或列表[]**包裹;axis:选填,指定拼接维度,默认axis=0;out:选填,极少使用,用于指定拼接结果的存放数组。
二、核心规则(必看)
- 维度必须一致:所有待拼接数组的维度数相同(比如都是2维数组,不能1维+2维拼接);
- 拼接轴外的维度必须匹配:除了拼接方向的轴,其他轴的长度必须完全一致;
- 拼接后维度不变:拼接后的数组维度数,和原数组一致(不会新增维度)。
三、常用示例(最直观理解)
1. 一维数组拼接(最简单)
一维数组只有1个维度,axis 只能为 0,直接首尾拼接:
import numpy as np
# 定义两个一维数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 拼接
result = np.concatenate((arr1, arr2))
print(result)
# 输出:[1 2 3 4 5 6]2. 二维数组拼接(最常用)
二维数组有两个轴:
axis=0:垂直拼接(行方向) → 上下拼接axis=1:水平拼接(列方向) → 左右拼接
示例1:axis=0(上下拼接)
要求:列数必须相同
# 2行2列的二维数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
# 行方向拼接
result = np.concatenate((arr1, arr2), axis=0)
print(result)
# 输出:
# [[1 2]
# [3 4]
# [5 6]
# [7 8]]示例2:axis=1(左右拼接)
要求:行数必须相同
result = np.concatenate((arr1, arr2), axis=1)
print(result)
# 输出:
# [[1 2 5 6]
# [3 4 7 8]]3. 三维数组拼接
遵循「除拼接轴外,其他维度必须匹配」规则,用法和二维一致。
四、常见报错原因
- 维度不匹配:1维数组 + 2维数组拼接;
- 非拼接轴长度不一致:二维数组
axis=0拼接时列数不同; - 参数格式错误:忘记用元组/列表包裹数组(错误写法:
np.concatenate(arr1, arr2))。
五、与其他拼接函数的区别
| 函数 | 特点 |
|---|---|
np.concatenate | 沿现有轴拼接,不新增维度 |
np.vstack / np.hstack | 垂直/水平拼接,语法更简单(底层调用concatenate) |
np.stack | 沿新轴拼接,会新增维度 |
总结
np.concatenate用于同维度数组的指定轴拼接,拼接后维度不变;- 一维:直接首尾拼接;二维:
axis=0上下、axis=1左右; - 核心要求:维度相同 + 非拼接轴长度一致。