在阅读numpy时,我遇到了函数numpy.histogram()
。
它的用途是什么?它是如何工作的?在文档中他们提到 bins :它们是什么?
一些谷歌搜索引导我进入definition of Histograms in general。我明白了。但不幸的是,我无法将这些知识与文档中给出的示例联系起来。
答案 0 :(得分:150)
bin是表示沿X轴的直方图的单个条的宽度的范围。你也可以称之为间隔。 (维基百科将它们更正式地定义为“不相交的类别”。)
Numpy histogram
函数不会绘制直方图,但会计算每个bin中输入数据的出现次数,而这些数据又决定了该区域(如果不是bin,则不一定是高度)每个条的宽度相等。
在这个例子中:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
有3个箱,值分别为0到1(不包括1),1到2(不包括2)和2到3(包括3)。 Numpy定义这些bin的方式是在这个例子中给出一个分隔符列表([0, 1, 2, 3]
),虽然它也返回结果中的bin,因为它可以从输入中自动选择它们,如果没有指定的话。例如,如果bins=5
,它将在最小输入值和最大输入值之间使用5个宽度相等的区间。
输入值为1,2和1.因此,bin“1到2”包含两次出现(两个1
值),bin“2到3”包含一次出现({{1 }})。这些结果位于返回元组的第一项:2
。
由于此处的箱柜宽度相等,因此您可以使用每个栏的高度出现次数。绘制时,您将拥有:
您可以使用Matplotlib直接绘制它(它的array([0, 2, 1])
函数也会返回二进制值和值):
hist
答案 1 :(得分:60)
import numpy as np
hist, bin_edges = np.histogram([1, 1, 2, 2, 2, 2, 3], bins = range(5))
下面,hist
表示bin#0中有0个项目,bin#1中有2个,bin#3中有4个,bin#4中有1个。
print(hist)
# array([0, 2, 4, 1])
bin_edges
表示bin#0是区间[0,1),bin#1是[1,2],...,
bin#3是[3,4]。
print (bin_edges)
# array([0, 1, 2, 3, 4]))
使用上面的代码,将输入更改为np.histogram
并查看其工作原理。
但是一张图片胜过千言万语:
import matplotlib.pyplot as plt
plt.bar(bin_edges[:-1], hist, width = 1)
plt.xlim(min(bin_edges), max(bin_edges))
plt.show()
答案 2 :(得分:4)