绘制正态分布直方图时频率恒为1的问题及钟形图实现求助
解决直方图频率恒为1的问题
问题根源在于你生成的数据维度:npr.normal(0,2,(1,100)) 创建的是二维数组(形状为(1,100)),而plt.hist处理二维数组时,会将每一行/列视为独立数据集绘制直方图。你的数组仅1行,每个数据点被当作单独数据集,导致每个bin最多只有1个数据,频率自然全为1。
解决方法只需将数据转为一维数组,两种实现方式:
- 生成数据时直接指定一维形状:
x = npr.normal(0, 2, 100) # 直接生成100个元素的一维数组 plt.hist(x, bins=10) plt.show()
- 对已生成的二维数组做扁平化处理:
x = npr.normal(0, 2, (1, 100)) plt.hist(x.flatten(), bins=10) # 用flatten()将二维数组转为一维 plt.show()
处理后就能得到呈现正态分布钟形的直方图。
内容的提问来源于stack exchange,提问作者Magnus Moller
相关产品推荐
相关产品推荐

