我注意到使用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
不提供泊松分布(为什么?)。
答案 0 :(得分:0)
您可以通过传递一个可迭代的lambdas来一次创建所有值:
numpy.random.poisson(lam=numpy.arange(200), size=(100, 200))
这将在一次执行中为200个不同的lambda(总共100 * 200个值)中的每一个返回100个值。