NumPy concatenate() 多维数组拼接详解与性能优化

江屿
江屿
发布时间:2026-10-12| 2人浏览过
原创

Numpy库中的concatenate()是处理多维数据合并的高频接口。本文详细拆解axis轴控制逻辑、out参数内存复用技巧,并通过性能实测对比其与append的差异,助力开发者编写更高效率的数值计算代码。

NumPy 数组拼接核心机制

NumPy提供了concatenate((a1, a2, ...), axis=0)接口,支持一次性将多个数组沿指定维度拼接为单一新数组。调用前需确保各输入数组在非拼接轴上的形状严格一致。

第1步:掌握 axis 轴参数与默认行为

目的:明确拼接方向。
入口:调用函数时传入axis整数参数。
重要参数:axis=0(默认)表示沿第0轴堆叠(增加行数);axis=1表示沿第1轴堆叠(增加列数)。负数索引从末尾计算,axis=-1等价于axis=1。若不显式声明,系统默认按axis=0执行。

第2步:验证一维与二维数组拼接效果

目的:观察不同维度下的实际拼接结果。
操作:

import numpy as np

# 一维数组:axis取值不影响一维线性拼接
a = np.array([1, 2, 3])
b = np.array([11, 22, 33])
c = np.array([44, 55, 66])
result_1d = np.concatenate((a, b, c))
print(result_1d) 
# 输出: [ 1  2  3 11 22 33 44 55 66]

对于二维矩阵,需分别测试纵向追加与横向连接:

a_mat = np.array([[1, 2, 3], [4, 5, 6]])
b_mat = np.array([[11, 21, 31], [7, 8, 9]])

# axis=0:沿纵轴拼接,行数由2增至4
res_axis0 = np.concatenate((a_mat, b_mat), axis=0)
print(res_axis0)

# axis=1:沿横轴拼接,列数由3增至6
res_axis1 = np.concatenate((a_mat, b_mat), axis=1)
print(res_axis1)

out 参数预分配内存实战

官方语法支持out选项。若传入预创建的NumPy数组,拼接结果将直接写入该内存地址,避免额外分配缓冲区,从而降低GC压力并提升吞吐率。

第3步:配置 out 输出目标数组

目的:实现零拷贝输出,节省内存开销。
条件:out的形状必须与拼接结果的预期形状完全匹配。
操作:

# 定义初始数据矩阵(4行6列)
array01 = np.arange(24).reshape(4, 6)

# 定义待拼接矩阵(4行9列)
array02 = np.arange(24, 60).reshape(4, 9)

# 预分配结果容器(4行15列),指定数据类型
target_arr = np.zeros((4, 15), dtype='int64')
print("预分配容器:\n", target_arr[:2])

# 执行拼接并覆写至 target_arr
np.concatenate((array01, array02), axis=1, out=target_arr)
print("\n拼接后输出至out:\n", target_arr[:2])

concatenate 与 append 性能差异

底层架构决定了两者的适用边界。NumPy的append()在循环调用时会反复创建临时对象并迁移数据,而concatenate()通过单次内存规划完成块级拷贝。在涉及万级以上数据批次或高维张量处理时,直接使用concatenate()可显著缩短运行耗时。

总结

以上就是 numpy.concatenate() 的多维数组拼接方法与 out 参数优化的详细内容,更多关于 NumPy 高性能计算与数据流处理资料的关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。