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

如何使用NumPy加速Python中依赖前项的序列计算?

用NumPy加速累积乘积序列计算

当然可以,而且效率提升会很明显。你的代码本质是计算累积乘积序列,每一项依赖前一项的结果,这种场景正好可以用NumPy的向量化操作替代Python循环,避开Python循环的解释器开销。

具体实现步骤:

  1. 一次性生成所有[20,35]范围内的整数随机数(注意NumPy的randint是左闭右开区间,所以要把上限设为36才能包含35)
  2. 用NumPy的cumprod()直接计算累积乘积,一步得到整个序列

替换后的代码:

import numpy as np

number_points = 10000
# 生成对应范围的随机整数数组
random_arr = np.random.randint(20, 36, size=number_points)
# 计算累积乘积,得到和原代码完全一致的序列
xx = random_arr.cumprod()

为什么更快?

Python的for循环是在解释器层面逐次执行,而NumPy的randint和cumprod都是底层用C实现的向量化操作,能充分利用CPU的并行计算能力,尤其是当number_points很大(比如10万、100万)时,速度差距会非常显著。

这里的cumprod结果和原代码的xx完全等价——原代码初始x=1,第一次循环后x=1*第一个随机数,正好对应random_arr[0],后续每一步的累积乘积也和原循环逻辑完全对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:59:57