如何使用NumPy与lambda将条件步长生成数组的代码改写为单行函数
实现方案
你要的单行lambda+numpy实现如下,直接返回numpy数组,完全匹配原函数逻辑:
import numpy as np generate_array = lambda n: (np.random.choice([1, -1], size=n)).cumsum() + 1
原理解释
- 你不需要手动保存每轮迭代的步长,numpy的
cumsum()方法会自动完成累计求和,正好对应你原代码里每轮迭代更新step的逻辑 np.random.choice([1, -1], size=n)直接生成n个随机的±1值,对应原代码里每次的步长增量- 最后整体加1对应你设置的初始步长
step=1
调用示例
print(generate_array(10))
输出示例(结果随机):
array([2, 3, 2, 3, 4, 3, 2, 3, 4, 5])
内容的提问来源于stack exchange,提问作者Nichiyoo
相关产品推荐
相关产品推荐

