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

如何使用numpy生成按固定累计百分比递增的数值列表?

生成固定复利递增序列的实现方案

Numpy 内置实现

numpy 有两种常用的内置方案可以直接实现这个需求,性能远高于纯Python循环,适合长序列场景:

方法1:使用np.cumprod(可读性更高)

核心逻辑是先生成每一期的增长因子,累计乘积后乘以基准值:

import numpy as np

base = 100
growth_rate = 0.05
n_length = 4  # 生成序列的长度,包含基准值

# 生成增长因子序列,首项为1对应基准值
factors = np.cumprod(np.full(n_length - 1, 1 + growth_rate))
factors = np.insert(factors, 0, 1)

result = (factors * base).round(2)
print(result)  # 输出:[100.   105.   110.25 115.76]
# 如果需要和示例一致截断为两位小数,可以用np.floor(factors * base * 100) / 100 得到[100.   105.   110.25 115.75]

方法2:使用np.logspace(代码更简洁)

直接通过等比数列生成工具实现,不需要额外拼接首项:

result = base * np.logspace(0, n_length -1, num=n_length, base=1 + growth_rate)

无依赖的纯Python实现

如果不需要处理超长序列,也可以用纯Python实现,不需要安装第三方库:

base = 100
growth_rate = 0.05
n_length = 4

# 列表推导实现,代码简洁
result = [round(base * (1 + growth_rate)**i, 2) for i in range(n_length)]
print(result)  # 输出:[100, 105, 110.25, 115.76]

如果序列长度非常大,递推实现比指数运算性能更好:

result = []
current = base
for _ in range(n_length):
    result.append(round(current, 2))
    current *= (1 + growth_rate)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:15:03