我有一个包含以下几行的 Python 代码:
# Poisson model
lambda_param = 3.0
x_model = numpy.linspace(0, 10, num=11, dtype=int)
y_model = numpy.zeros(10)
index = 0
for x in x_model:
y_model[index] = numpy.power(lambda_param, x) / math.factorial(x) * numpy.exp(-lambda_param)
index += 1
我想用一种更 Pythonic 的方式来编写它——不使用 for 循环。
我试过这个:
y_model = numpy.power(lambda_param, x_model) / math.factorial(x_model) * numpy.exp(-lambda_param)
但这似乎不起作用,我猜是因为math.factorial
不知道如何对类似数组的对象进行操作。
有没有办法做到这一点?
这是
pmf
泊松分布的分布。使用scipy.stats.poisson
:请注意,对于泊松,x
必须是整数:您可以用作
scipy.special.factorial
支持通过 numpy 数组广播的阶乘函数。