Numpy 直方图数据:为什么 bin 向量的长度比直方图值向量的长度长?

dev*_*ist 6 python numpy matplotlib histogram binning

有两个输出numpy.histogram

  • hist:直方图的值
  • bin_edges:返回 bin 边缘(length(hist)+1)

两者都是向量,但在下面的示例中,第二个向量的长度为 101,比第一个向量(长度为 100)高 1:

import numpy as np
from numpy.random import rand, randn

n = 100  # number of bins
X = randn(n)*.1
a,bins1 = np.histogram(X,bins=n)
Run Code Online (Sandbox Code Playgroud)

如果我随后尝试,则会出现以下形状错误plt.plot(bins1,a)

ValueError: x and y must have same first dimension, but have shapes (101,) and (100,)

为什么以及如何修复不等形状错误以便绘制直方图?

Tim*_*imo 2

出现不相等的形状是因为bin_edges,顾名思义,指定了 bin 边缘。由于 bin 有左边缘和右边缘,bin_edges因此长度为len(bins)+1

正如评论中已经指出的,绘制的适当方法是plt.hist