[英]Numpy histogram data: Why is the length of bins vector longer than the histogram values vector?
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)
如果我随后尝试plt.plot(bins1,a)
则会出现以下形状错误:
ValueError: x and y must have same first dimension, but have shapes (101,) and (100,)
为什么,以及如何修复不等形状错误,以便我可以 plot 直方图?
出现不相等的形状是因为bin_edges
,顾名思义,指定了 bin 边缘。 由于 bin 具有左右边缘,因此bin_edges
的长度为len(bins)+1
。
正如评论中已经指出的,适当的绘图方法是plt.hist
我也有这个问题,因为我想在做直方图之前转换我的数据,但显示未转换的结果(例如,只保留自动生成的 bin 边缘)。 这里的其他答案可以帮助您完成大部分工作,但我发现有用的是做这样的事情:
h, bin_edges = np.histogram(np.log(X), bins=100)
plt.hist(X, bins=np.exp(bin_edges))
当然,您可以通过最初选择您的 bin 边缘并将它们传递给plt.hist
而不使用np.histogram
来手动执行此操作。 但这很好,因为自动计算为我简化了一些事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.