以数组为指数的 Numpy 幂

问题描述 投票:0回答:1

我有一个包含以下几行的Python代码:

# Poisson model

lambda_param = 3.0

x_model = numpy.linspace(0, 10, num=10)
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
不知道如何操作像数组这样的对象。

有办法做到这一点吗?

python numpy factorial poisson
1个回答
0
投票

您可以使用

scipy.special.factorial
作为支持在 numpy 数组上广播的阶乘函数。

import numpy as np
import scipy.special

>>> scipy.special.factorial(np.arange(7))
array([  1.,   1.,   2.,   6.,  24., 120., 720.])
© www.soinside.com 2019 - 2024. All rights reserved.