You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中变量赋值运算为何比Numpy数组操作执行速度更快?

复现性说明

你观测到的现象是完全可复现的,test2远快于test1的运行结果符合预期。

速度差异原因

两者的性能差距本质是使用numpy的方式不对,没有发挥它的优势反而承担了额外开销:

  • numpy的数组运算为了适配各种长度、各种维度的通用场景,内置了类型校验、内存对齐、广播逻辑适配、多线程调度判断等额外步骤,这些步骤在处理长度仅为3的小数组时,开销占比远高于运算本身的耗时。而test2中的所有操作都是Python标量运算,不存在这类额外开销。
  • test1每次循环都需要执行np.array([1,1,1])创建新的numpy数组,仅这一步的耗时就远高于test2里直接给三个标量变量赋值1的操作。
  • 你当前的两个实现都是在Python层做循环遍历每个坐标点,Python层循环本身执行效率很低,test1在慢循环里还叠加了numpy的多步额外开销,自然远慢于test2在循环里仅做轻量标量运算的实现。
优化参考

numpy的核心优势是向量化批量运算,你可以把整个计算逻辑搬到numpy底层执行,完全避免Python层循环,性能会比test2还要高得多,参考实现如下:

def test3(coords):
    # 整个数组批量运算,循环在C层执行
    squared_diff = (coords - np.array([1,1,1])) ** 2
    squared_sum = np.sum(squared_diff, axis=1)
    return np.sqrt(squared_sum).tolist()

在相同测试数据下,这个实现的耗时会远低于你给出的两个测试用例。

内容的提问来源于stack exchange,提问作者Jacob Bumgarner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:06:04