np.concatenateNumPy 中最核心的数组拼接函数,用于沿着指定的轴将多个同维度的 NumPy 数组拼接成一个数组,是数据合并、维度拼接的常用工具。

一、核心语法

numpy.concatenate(
    (a1, a2, ...),  # 要拼接的数组序列,必须是元组/列表形式
    axis=0,         # 拼接的轴方向,默认 axis=0(行/第一个维度)
    out=None         # 可选,指定输出数组的存储位置
)

关键参数说明

  1. (a1, a2, ...):必填,传入需要拼接的多个 NumPy 数组,必须用**元组 () 或列表 []**包裹;
  2. axis:选填,指定拼接维度,默认 axis=0
  3. out:选填,极少使用,用于指定拼接结果的存放数组。

二、核心规则(必看)

  1. 维度必须一致:所有待拼接数组的维度数相同(比如都是2维数组,不能1维+2维拼接);
  2. 拼接轴外的维度必须匹配:除了拼接方向的轴,其他轴的长度必须完全一致;
  3. 拼接后维度不变:拼接后的数组维度数,和原数组一致(不会新增维度)。

三、常用示例(最直观理解)

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. 维度不匹配:1维数组 + 2维数组拼接;
  2. 非拼接轴长度不一致:二维数组 axis=0 拼接时列数不同;
  3. 参数格式错误:忘记用元组/列表包裹数组(错误写法:np.concatenate(arr1, arr2))。

五、与其他拼接函数的区别

函数特点
np.concatenate沿现有轴拼接,不新增维度
np.vstack / np.hstack垂直/水平拼接,语法更简单(底层调用concatenate)
np.stack沿新轴拼接,会新增维度

总结

  1. np.concatenate 用于同维度数组的指定轴拼接,拼接后维度不变;
  2. 一维:直接首尾拼接;二维:axis=0上下、axis=1左右;
  3. 核心要求:维度相同 + 非拼接轴长度一致