什么是矢量化?[关闭]

2025-02-25 09:07:00
admin
原创
18
摘要:问题描述:在 Python 中矢量化 for 循环是什么意思?还有其他方法可以编写嵌套 for 循环吗?我是 Python 新手,在研究中,我总是遇到 NumPy 库。解决方案 1:Pythonfor循环本质上比 C 循环慢。这就是为什么numpy提供数组上的矢量化操作numpy。它将for通常在 Pytho...

问题描述:

在 Python 中矢量化 for 循环是什么意思?还有其他方法可以编写嵌套 for 循环吗?

我是 Python 新手,在研究中,我总是遇到 NumPy 库。


解决方案 1:

Pythonfor循环本质上比 C 循环慢。

这就是为什么numpy提供数组上的矢量化操作numpy。它将for通常在 Python 中执行的循环下推到 C 级别,速度要快得多。numpy提供矢量化(“C 级别for循环”)替代方案,以替代原本需要以元素方式(“Python 级别for循环”)完成的操作。

import numpy as np
from timeit import Timer

li = list(range(500000))
nump_arr = np.array(li)

def python_for():
    return [num + 1 for num in li]

def numpy_add():
    return nump_arr + 1

print(min(Timer(python_for).repeat(10, 10)))
print(min(Timer(numpy_add).repeat(10, 10)))

#  0.725692612368003
#  0.010465986942008954

矢量化加法numpy速度提高了 70 倍。

解决方案 2:

以下是Wes McKinney 的定义:

数组很重要,因为它们使您能够表达对数据的批量操作,而无需编写任何 for 循环。这通常称为矢量化。大小相等的数组之间的任何算术运算都会逐元素应用该运算。

矢量化版本:

>>> import numpy as np
>>> arr = np.array([[1., 2., 3.], [4., 5., 6.]])
>>> arr * arr
array([[  1.,   4.,   9.],
       [ 16.,  25.,  36.]])

与原生 Python(嵌套)列表上的循环相同:

>>> arr = arr.tolist()
>>> res = [[0., 0., 0.], [0., 0., 0.]]
>>> for idx1, row in enumerate(arr):
        for idx2, val2 in enumerate(row):
            res[idx1][idx2] = val2 * val2
>>> res
[[1.0, 4.0, 9.0], [16.0, 25.0, 36.0]]

这两个操作如何比较?NumPy 版本需要 436 纳秒;Python 版本需要 3.52 微秒(3520 纳秒)。这种“微小”时间的巨大差异被称为微性能,当您处理较大的数据或重复操作数千次或数百万次时,它就变得很重要。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1343  
  信创产业的蓬勃发展推动着各行业数字化转型加速,数据库迁移作为其中关键一环,面临诸多挑战。信创数据库迁移旨在将传统数据库平稳过渡到信创环境,以满足自主可控、安全可靠的需求。这一过程涉及技术、业务等多方面因素,稍有不慎就可能出现各种问题,影响业务的正常运行。深入探讨信创数据库迁移过程中的常见问题及解决方案,对于保障迁移工作...
2027年信创国产化   41  
  随着信息技术的飞速发展,信创国产化成为了国家战略的重要组成部分。国产化信创产品名录涵盖了众多领域,其在各个关键应用场景中发挥着重要作用。而信创国产化操作系统作为其中的核心环节,具备五大核心优势,为我国信息技术产业的自主可控发展提供了坚实支撑。关键应用场景之办公领域在办公领域,国产化信创产品有着广泛且深入的应用。如今,越...
国产信创系统   37  
  随着信息技术的飞速发展,信创国产化操作系统在政府部门的推广应用具有重要的战略意义。它不仅关乎国家信息安全,更是推动国内信息技术产业自主创新、实现科技自立自强的关键举措。在当前复杂的国际形势下,政府部门积极推广信创国产化操作系统,对于保障国家政务信息的安全稳定运行,提升信息技术的自主可控能力,具有不可替代的重要作用。推广...
信创产品有哪些   28  
  在企业数字化转型的进程中,信创数据库解决方案的选择至关重要。它不仅关乎企业数据的安全存储与管理,更影响着企业业务的稳定运行与未来发展。合适的信创数据库能够助力企业在复杂多变的市场环境中提升竞争力,保障数据主权与安全。然而,面对市场上众多的信创数据库产品和解决方案,企业往往感到困惑,不知如何做出正确的选择。接下来,我们将...
信创电脑   24  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用