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

如何用numpy.repeat构建递增值数组?薪资500年增1%实现问询

嘿,我来帮你搞定这两个numpy相关的问题~

问题2:用numpy替代循环生成薪资递增数组(每年10%涨幅)

首先说你关心的薪资问题:你原来的循环逻辑是让初始薪资500每年乘以1.1,执行15次。其实用numpy可以完全摆脱循环,而且效率更高。

如果你想结合numpy.arange和numpy.repeat来实现,思路是这样的:

  1. 先用repeat生成对应次数的涨幅因子(也就是1.1)
  2. 和初始薪资拼接成一个数组
  3. 用cumprod计算累积乘积,就能得到逐年递增的薪资数组

具体代码如下:

import numpy as np

salary_initial = 500
years = 15  # 对应你循环里的15次迭代

# 生成15个1.1的因子,和初始薪资拼接
factors = np.concatenate([[salary_initial], np.repeat(1.1, years)])
# 计算累积乘积,得到从初始薪资开始的所有年度薪资
salaries = np.cumprod(factors)

# 如果你想要和循环打印结果完全一致的输出(也就是去掉初始的500),取后面的元素即可
print(salaries[1:])

当然,更简洁的方式是直接用arange生成指数,结合幂运算,不需要repeat也能搞定:

import numpy as np

salary_initial = 500
years = 15
# 生成0到15的指数,计算1.1的对应幂次再乘以初始薪资
salaries = salary_initial * (1.1) ** np.arange(0, years + 1)
print(salaries[1:])  # 同样取后面15个值对应循环的输出

这两种方法都比循环高效,尤其是当你需要生成大量数据的时候。

问题1:用numpy.repeat构建元素逐次递增1%的数组

这个问题的逻辑和薪资问题类似,只是涨幅变成了1%(也就是乘以1.01)。用repeat的实现思路如下:

假设你想要生成n个元素,初始值为initial_value:

import numpy as np

initial_value = 100  # 自定义初始值
n = 10  # 想要生成的数组长度

# 拼接初始值和n-1个1.01的因子
factors = np.concatenate([[initial_value], np.repeat(1.01, n-1)])
# 累积乘积得到每个元素比前一个大1%的数组
result_array = np.cumprod(factors)

print(result_array)

输出的数组会是[100, 101, 102.01, 103.0301, ...],完全符合你的要求。

同样,如果你不需要局限于用repeat,直接用幂运算会更简洁:

result_array = initial_value * (1.01) ** np.arange(n)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:21:32