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

如何生成步长递增的numpy.arange数组?

高效生成可变步长的实时时间数组(基于Numpy)

核心解法:利用numpy.cumsum()实现向量化累加

你要的功能完全可以通过Numpy的**累加函数cumsum()**高效实现,这比Python循环快几个数量级,尤其适合处理大数组。

原理很简单:你的递归公式t(i) = t(i-1) + dt(i)本质上就是初始值加上所有前序增量的累加和。步骤如下:

  1. 先生成所有相邻索引间的增量数组dt
  2. 对dt做累加,再加上初始时间值,就能得到完整的实时时间数组

对应你的示例实现

你的示例中,增量dt(i) = 2i(i从1到6),初始时间t(0)=0,代码如下:

import numpy as np

# 生成索引对应的增量数组(i从1到6)
dt = 2 * np.arange(1, 7)
# 生成时间数组:初始值0 + 增量的累加
t = np.concatenate([[0], np.cumsum(dt)])

print(t)
# 输出:[ 0  1  5 11 19 29 41]

完全匹配你给出的示例结果。

通用线性增量场景的实现

如果你的增量是通用线性函数dt(i) = m*i + b,同样可以用这个思路:

import numpy as np

m = 2  # 斜率
b = 0  # 截距
n = 7  # 时间数组的长度(对应索引0到6)
t0 = 0  # 初始时间

# 生成i从1到n-1的增量数组
dt = m * np.arange(1, n) + b
# 生成时间数组
t = np.insert(np.cumsum(dt), 0, t0)

为什么不用循环?

Python的for循环在处理十万/百万级别的大数组时,会因为逐元素操作的开销变得很慢。而cumsum()是Numpy底层用C实现的向量化操作,能充分利用CPU的并行计算能力,速度差距非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:27:08