什么是矢量化?[关闭]

2025-02-25 09:07:00
admin
原创
19
摘要:问题描述:在 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 纳秒)。这种“微小”时间的巨大差异被称为微性能,当您处理较大的数据或重复操作数千次或数百万次时,它就变得很重要。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1344  
  随着房地产行业的快速发展,项目管理在确保项目按时、按预算和高质量完成方面变得至关重要。2025年,房地产项目经理将面临更加复杂的项目需求和更高的管理标准。为了应对这些挑战,选择合适的管理工具显得尤为重要。本文将推荐10款在2025年备受房地产项目经理青睐的管理工具,帮助您提升项目管理效率,确保项目成功。禅道项目管理软件...
开源项目管理工具   0  
  在全球化日益深入的今天,跨国团队的合作已成为企业运营的常态。随着团队成员分布在不同国家和地区,语言和文化的多样性给项目管理带来了新的挑战。为了确保项目顺利进行,选择一款适合的多语言项目管理工具至关重要。本文将介绍2025年跨国团队必备的10款多语言项目管理工具,帮助团队高效协作,提升项目成功率。禅道项目管理软件禅道项目...
项目管理平台   0  
  随着工程管理领域的不断发展,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的重要工具。2025年,工程管理将面临更加复杂的挑战,包括跨团队协作、资源优化、数据驱动决策等。因此,选择一款适合的项目管理软件显得尤为重要。本文将为您推荐2025年最适合工程管理的10款项目管理软件,帮助您在众多选择中找到最适合...
项目管理工具   0  
  跨文化团队的项目运作日益普遍,高级项目管理师在其中扮演着至关重要的角色。有效的沟通是确保项目顺利推进、团队协作无间的关键因素。高级项目管理师需要掌握一系列独特的沟通技巧,以跨越文化差异带来的障碍,实现高效的信息传递与团队协作。理解文化差异文化差异是跨文化团队沟通中面临的首要挑战。不同国家、地区和民族有着各自独特的价值观...
项目管理包括哪些内容   1  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用