Python原生列表与NumPy数组向量相加性能深度对比

小满
小满
发布时间:2026-10-13| 6人浏览过
原创

本文通过具体代码实例,对比了Python原生列表循环累加与NumPy数组向量化运算在向量相加任务中的执行效率。测试结果显示,当处理1000个元素的向量时,Python原生实现耗时约1000微秒,而NumPy实现耗时为0微秒。文章详细展示了两种方法的代码实现及运行结果,揭示了NumPy在数值计算方面的显著性能优势。

Python原生向量相加实现

首先,我们探讨如何使用Python原生语法来实现两个向量的相加操作。这种方法通常涉及使用列表和循环来逐个处理元素。


# -*-coding:utf-8-*-
#向量相加
def pythonsum(n):
 a = range(n)
 b = range(n)
 c = []
 for i in range(len(a)):
  a[i] = i**2
  b[i] = i**3
  c.append(a[i]+b[i])
 return a,b,c

print pythonsum(4),type(pythonsum(4))
for arg in pythonsum(4):
 print arg

多返回值类型分析

从上述代码的输出结果可以看出,当Python函数返回多个值时,它们实际上是以元组(tuple)的形式返回的,而非列表。在示例中,函数 `pythonsum(4)` 返回了一个包含三个列表的元组,类型标识为 `<type 'tuple'>`。


([0, 1, 4, 9], [0, 1, 8, 27], [0, 2, 12, 36]) <type 'tuple'>
[0, 1, 4, 9]
[0, 1, 8, 27]
[0, 2, 12, 36]

NumPy向量相加实现

接下来,我们使用NumPy库来实现同样的向量相加任务。NumPy提供了专门用于高效数值计算的数组对象,能够简化代码并提升执行速度。


def numpysum(n):
 a = np.arange(n) ** 2
 b = np.arange(n) ** 3
 c = a + b
 return a,b,c

(array([0, 1, 4, 9]), array([ 0, 1, 8, 27]), array([ 0, 2, 12, 36])) <type 'function'>
[0 1 4 9]
[ 0 1 8 27]
[ 0 2 12 36]

两种实现方式的对比

为了直观展示差异,我们将对比使用Python原生列表实现向量相加与使用NumPy实现向量相加的情况。重点在于观察两者在代码简洁性和执行效率上的区别。


size = 1000
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
# print 'The last 2 elements of the sum',c[-2:]
print 'pythonSum elapsed time in microseconds',delta.microseconds

size = 1000
start1 = datetime.now()
c1 = numpysum(size)
delta1 = datetime.now() - start1
# print 'The last 2 elements of the sum',c1[-2:]
print 'numpySum elapsed time in microseconds',delta1.microseconds

性能测试结果分析

通过运行上述程序,我们可以清晰地看到,在处理向量运算时,NumPy的性能远超Python原生实现。在测试用例中,Python实现的耗时约为1000微秒,而NumPy实现的耗时显示为0微秒(实际极小,低于计时精度),这体现了NumPy在大规模数值计算中的巨大优势。


pythonSum elapsed time in microseconds 1000
numpySum elapsed time in microseconds 0

总结与建议

以上关于Python原生向量相加与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 算法库。