numpy 泊松分布中的密度图

7vhp5slm  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(72)

我需要画一个密度图的泊松分布和直方图的选择,但一个给定的错误发生,我不知道如何解决

import numpy as np
import matplotlib.pyplot as plt

lam = 3  # Параметр распределения Пуассона (лямбда)
x = np.arange(0, 20)

# Вычисление значений плотности распределения Пуассона
y = np.exp(-lam) * (lam ** x) / np.math.factorial(x)

# Построение графика
plt.plot(x, y, 'bo', ms=8)  # 'bo' - голубые круглые маркеры

plt.xlabel("Значение СВ")
plt.ylabel("Плотность")

plt.title("Распределение Пуассона")
plt.show()

我尝试用np.array(x)替换x,但没有任何结果

mpbci0fu

mpbci0fu1#

而不是

y = np.exp(-lam) * (lam ** x) / np.math.factorial(x)

你应该重新定义x的值,所以试试这个:

y = [np.exp(-lam) * (lam ** i) / np.math.factorial(i) for i in x]

其余的都一样。

piv4azn7

piv4azn72#

添加到Ugur的anwser中,您需要对factorial函数进行向量化(在numpy的包中非常不寻常)。同样对于条形图,必须使用plt.bar

import matplotlib.pylab as plt
import numpy as np

lam = 3  # Параметр распределения Пуассона (лямбда)
x = np.arange(0, 20)

# Вычисление значений плотности распределения Пуассона
y = np.exp(-lam) * (lam ** x) / np.vectorize(np.math.factorial)(x)

# Построение графика
plt.bar(x, y)  # 'bo' - голубые круглые маркеры

plt.xlabel("Значение СВ")
plt.ylabel("Плотность")

plt.title("Распределение Пуассона")
plt.show()
c8ib6hqw

c8ib6hqw3#

根据this answernp.math.factorialscipy.math.factorial只是math.factorial的别名,它不适用于numpy数组。相反,使用scipy.special.factorial,它可以使用numpy数组。

from scipy.special import factorial

x = np.arange(0, 20)

# other code here

y = np.exp(-lam)*(lam**x)/factorial(x)

# plotting code here

相关问题