numpy.random.poisson()的替代方案,用于绘制单个泊松分布随机数



我注意到使用numpy.random绘制单个随机数通常比使用random慢,显然是因为numpy.random优化了在一次拍摄中绘制一堆随机数。例如,从列表中抽样一个随机整数的时间如下所示:

import timeit
setup = '''
import random
import numpy
'''
min(timeit.Timer('numpy.random.choice(range(100))',setup=setup).repeat(10, int(1e4)))
min(timeit.Timer('random.choice(range(100))', setup=setup).repeat(10, int(1e4)))

numpy。随机:0.1427

random: 0.0095

现在我需要用变量 lambda参数绘制单个泊辛分布随机变量,这意味着我不能在一次运行中生成一堆随机变量以供以后使用。因此,我寻找numpy.random.poisson()的替代方案,因为我预计,与上面的结果类似,使用它将极大地降低我的速度。然而,random不提供泊松分布(为什么?)。

您可以通过传入lambdas的可迭代对象来一次创建所有值:

numpy.random.poisson(lam=numpy.arange(200), size=(100, 200))

这将在一次执行中为200个不同的lambda(总共100 * 200个值)中的每个值返回100个值。

最新更新