我注意到使用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个值。