我需要画一个密度图的泊松分布和直方图的选择,但一个给定的错误发生,我不知道如何解决
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
,但没有任何结果
3条答案
按热度按时间mpbci0fu1#
而不是
你应该重新定义x的值,所以试试这个:
其余的都一样。
piv4azn72#
添加到Ugur的anwser中,您需要对factorial函数进行向量化(在numpy的包中非常不寻常)。同样对于条形图,必须使用
plt.bar
:c8ib6hqw3#
根据this answer,
np.math.factorial
和scipy.math.factorial
只是math.factorial
的别名,它不适用于numpy数组。相反,使用scipy.special.factorial
,它可以使用numpy数组。