Eu tenho um código Python contendo as seguintes linhas:
# 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
Quero escrever isso de uma forma mais pitônica - sem usar um loop for.
Eu tentei isso:
y_model = numpy.power(lambda_param, x_model) / math.factorial(x_model) * numpy.exp(-lambda_param)
Mas isso não pareceu funcionar, eu acho, porque math.factorial
não sabe como operar em um objeto semelhante a um array.
Existe uma maneira de fazer isso?
Este é o
pmf
caso de uma distribuição de poisson. Usoscipy.stats.poisson
: Observe que para poisson,x
devem ser números inteiros:Você pode usar
scipy.special.factorial
como uma função fatorial que suporta transmissão em matrizes numpy.