gpt4 book ai didi

Python/ NumPy /Scipy : Draw Poisson random values with different lambda

转载 作者:太空狗 更新时间:2023-10-30 00:15:00 25 4
gpt4 key购买 nike

我的问题是以最有效的方式提取 N 个泊松随机值 (RV),每个值都具有不同的均值/比率 Lam。基本上是 size(RV) == size(Lam)

这是一个简单的(非常慢的)实现:

import numpy as NP

def multi_rate_poisson(Lam):
rv = NP.zeros(NP.size(Lam))
for i,lam in enumerate(Lam):
rv[i] = NP.random.poisson(lam=lam, size=1)
return rv

在我的笔记本电脑上,1e6 个样本给出:

Lam = NP.random.rand(1e6) + 1
timeit multi_poisson(Lam)
1 loops, best of 3: 4.82 s per loop

是否可以从中改进?

最佳答案

虽然文档字符串没有记录这个功能,source表示可以将数组传递给 numpy.random.poisson 函数。

>>> import numpy
>>> # 1 dimension array of 1M random var's uniformly distributed between 1 and 2
>>> numpyarray = numpy.random.rand(1e6) + 1
>>> # pass to poisson
>>> poissonarray = numpy.random.poisson(lam=numpyarray)
>>> poissonarray
array([4, 2, 3, ..., 1, 0, 0])

poisson random variable返回 1 的离散倍数,并在 lambda 超过 1 时近似钟形曲线。

>>> import matplotlib.pyplot
>>> count, bins, ignored = matplotlib.pyplot.hist(
numpy.random.poisson(
lam=numpy.random.rand(1e6) + 10),
14, normed=True)
>>> matplotlib.pyplot.show()

这种将数组传递给泊松生成器的方法似乎非常有效。

>>> timeit.Timer("numpy.random.poisson(lam=numpy.random.rand(1e6) + 1)",
'import numpy').repeat(3,1)
[0.13525915145874023, 0.12136101722717285, 0.12127304077148438]

关于Python/ NumPy /Scipy : Draw Poisson random values with different lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com