Plotting PMF jupyter notebook : ValueError: shape mismatch: objects cannot be broadcast to a single shape

Plotting PMF jupyter notebook : ValueError: shape mismatch: objects cannot be broadcast to a single shape

目前正在执行一项任务,需要我将概率质量函数绘制成图表。我拥有的质量函数与被抛 3 次的有偏见的硬币有关:

P(H) = 0.75
P(T) = 0.25
X = 0,1,2,3
F(0) = P(X=0) = P(t,t,t) = 0.015625
F(1) = P(X=1) = P(h,t,t) + P(t,h,t) + P(t,t,h) = ‬0.140625
F(2) = P(X=2) = P(h,h,t) + P(h,t,h) + P(t,h,h) = 0.421875
F(3) = P(X=3) = P(h,h,h) = 0.421875

当我使用以下代码绘制这些点时

import matplotlib.pyplot as plt

prob = np.array([0,0.015625,0.140625,0.421875,0.421875])
x = np.arange(0,3)
plt.bar(x,prob, width = 0.5)
plt.xlim(0.5,3.5)
plt.show()

我遇到了这个错误:

ValueError: shape mismatch: objects cannot be broadcast to a single shape

x 数组的形状必须与 prob 数组的形状匹配。我可以提出以下建议:

import matplotlib.pyplot as plt

prob = np.array([0.015625,0.140625,0.421875,0.421875])
x = np.arange(4)
plt.bar(x, prob, width = 0.5)
plt.xticks(x)
plt.xlim(-0.5,3.5)
plt.show()

您在 prob 中有 5 个元素,在 x 中有 3 个元素。 Python 如果两个数组中的元素数量不同,则无法绘制图表。由于 prob 中有 5 个元素,因此您需要在 x 轴上有 5 个刻度才能绘制条形图。

x = np.arange(0, 3) 更改为 x = np.arange(0, 5) 并将 plt.xlim(0.5,3.5) 更改为 plt.xlim(0.5,4.5) 并且您应该得到情节。