替代numpy.random.poisson()用于绘制SINGLE泊松分布随机数

时间:2016-08-18 07:59:54

标签: python

我注意到使用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.random:0.1427

随机:0.0095

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

1 个答案:

答案 0 :(得分:0)

您可以通过传递一个可迭代的lambdas来一次创建所有值:

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

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