繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM