我想使用Matplotlib在Python中绘制Poisson函数。该函数是(exp(-5)* 5 ^ x)/ factorial(x)
import numpy as np
import math
import matplotlib.pyplot as plt
t = np.arange(0, 20, 0.1)
d = []
for i in t:
p = pow(5,i)
q = p/math.factorial(i)
d.append(q)
plt.plot( t, np.exp(-5)*d, 'bs')
plt.show()
但是我得到这个错误。“只有size ^ 1数组可以转换为Python标量”。如何绘制此图?预先感谢
答案 0 :(得分:2)
我认为您的功能不正确:exp(-5)
import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import factorial
t = np.arange(0, 20, 0.1)
d = np.exp(-5)*np.power(5, t)/factorial(t)
plt.plot(t, d, 'bs')
plt.show()
答案 1 :(得分:0)
直接的问题可能是您在循环中使用了“ t”而不是“ i”。但是,您可能要避免将python列表与numpy数组混合使用。您可以这样做,
import numpy as np
import scipy.misc
import math
import matplotlib.pyplot as plt
t = np.arange(0, 20, 0.1)
x = np.power(t, 5)
y = scipy.misc.factorial(t)
plt.plot( t, x / y, 'bs')
plt.show()