NumPy数组叠加操作与维度概念详解

沈知远
沈知远
发布时间:2026-10-15| 4人浏览过
原创

本文详细解析NumPy中两个数组的叠加操作,包括逐元素相加、沿指定维度拼接及增加维度的堆叠方法。同时厘清size、ndim与shape三个易混淆概念的定义与区别,通过代码示例说明不同操作对数组维度和形状的影响,帮助开发者准确掌握NumPy数组处理技巧。

NumPy提供了多种针对两个数组进行运算的方法,其中关于叠加的方式以及叠加后产生的维度变化常常让初学者感到困惑。本文将对这些常见操作进行梳理和总结。

一、 叠加操作

1. add

这是一种逐元素的操作方式。如果执行的是array + 常量,常量会广播(broadcast)到数组的每个元素上;如果执行的是array + array,则要求两个array的shape必须一致。

end = '\n'+'*'*50+'\n'
a = np.array([[1,2],[3,4]])
b = np.array([[5,6], [7,8]])
print(a+1, end=end)
print(a+b)

输出结果如下:

[[2 3] [4 5]] ************************************************** [[ 6 8] [10 12]]

2. concatenate

该函数用于在指定的维度上将两个数组进行拼接。它不会改变数组原有的维度数,但要求参与拼接的两个数组维度相同,且在指定的拼接维度上,数组的大小(size)也必须相等。值得注意的是,两个数组的shape不一定完全一致,这一点可能比较拗口,请结合下面的例子理解:

end = '\n'+'*'*50+'\n'
a = np.array([[1,2],[3,4]])
b = np.array([[5,6], [7,8]])
c = np.array([[5,6]])
d = np.array([5,6])
f = np.array([[5]])

变量a与c的shape并不相同:

当维度不一致时:

当长度不一致时:

3. stack & hstack

stack函数在垂直方向上拼接两个数组(允许指定axis参数),它要求两个数组的shape严格一致,其结果会增加一个维度;

hstack函数在水平方向(即第0维,不可指定axis参数)拼接两个数组,它要求两者的维度相同,且在第0维上的size也相同,拼接后的结果不改变原有的维度数。

使用stack时,结果会在原有维度的基础上增加1;

对于hstack,如果a和c在第0轴的size不同:

若先进行转置操作,则可以正常拼接:

二、 size & ndim & shape

这三个概念非常容易混淆,具体区别如下:

  • size:指的是数组中“元素的总个数”;
  • ndim:表示“维度”,指的是“嵌套的层数”,即中括号的个数,其数值同时与shape列表的长度(len)相等。其中axis=0指的是最外层的中括号,往里依次递增;
  • shape:size和ndim综合起来构成了shape。如果两个数组的shape相同,则意味着两者的ndim相同,且在每一个axis上的size也完全相同。

请看下面的例子:

值得注意的是,ndim、size以及shape之间没有必然的联系,一个ndim不为0的数组可能没有任何元素:

即使size相同,shape和ndim也不一定相同:

总结

到此这篇关于NumPy两个数组叠加操作的文章就介绍到这了,更多相关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 算法库。