我正在学习一门关于Python的在线课程。以下是代码,未经修改。它执行了100次随机步行的Monte Carlo重复,每次10步。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
final_tails = []
for x in range(100) :
tails = [0]
for x in range(10) :
coin = np.random.randint(0, 2)
tails.append(tails[x] + coin)
final_tails.append(tails[-1])
plt.hist(final_tails, bins = 10)
plt.show()
这个课程说我应该得到没有间隙的图表。我的柱状图高度完全相同,顺序也完全相同,但它们之间有一些奇怪的间距。
有人能证实这个结果或解释一下吗?
我正在使用:- Python 3.7.1 64位
- Windows 7 64位
- Spyder 3.3.2
print( np.unique( np.array( final_tails ) ) )
print( np.unique( final_tails ) ) # data values
hist, bin_edges = np.histogram( final_tails )
print(bin_edges) # bin edges
print(hist) # bar heights
数据值为:[2 3 4 5 6 7 8 9]
分组边界为:[2. 2.7 3.4 4.1 4.8 5.5 6.2 6.9 7.6 8.3 9. ]
柱高度为:[ 2 10 23 0 21 27 0 10 6 1]
我使用以下代码获得了课程的漂亮靠拢条形图:
plt.hist( final_tails ,
bins = np.arange( min( final_tails ) - 0.5 ,
max( final_tails ) + 1.5 , 1.0 ) ,
edgecolor="k" )
plt.show()
我没有将这个作为答案发布,因为功劳归于saibhaskar和ImportanceOfBeingErnest,他们提供了详细信息。
但我想知道是否需要自定义bin边缘是因为自动bin边缘的方案在课程材料创建和现在之间发生了变化。