NumPy(Numerical Python 的缩写)是一个开源的 Python 科学计算库。通过 NumPy,可以高效地处理 多维数组(ndarray),并提供大量用于 线性代数、傅里叶变换、随机数生成 的函数。在数据处理过程中,经常需要将多个数组 合并(连接) 成一个数组。本文主要介绍 NumPy 中常用的数组连接方式,包括:concatenate()、stack()、hstack()、vstack()和dstack()。

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


推荐文档