numpy.histogram()如何工作?
当读到numpy时,我遇到了函数numpy.histogram()
。
它是什么,它是如何工作的? 在文件中他们提到了箱子 :他们是什么?
一些谷歌search引导我一般直方图的定义 。 我明白了。 但不幸的是,我不能将这些知识与文档中给出的例子联系起来。
一个bin是代表沿着X轴的直方图的单个条的宽度的范围。 你也可以称之为间隔。 (维基百科更正式地将它们定义为“不相交的类别”)。
Numpy histogram
函数不绘制直方图,但计算每个分栏内的input数据的出现次数,然后依次确定每个栏的面积(不一定是高度,如果分箱的宽度不相等)。
在这个例子中:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
有3个bin,值分别为0到1(不包括1),1到2(不包括2)和2到3(包括3)。 在这个例子中,Numpy通过给定一个分隔符列表( [0, 1, 2, 3]
)来定义这些bin,尽pipe它也返回结果中的bin,因为它可以从input中自动select它们,如果没有被指定。 例如,如果bins=5
,则将使用在最小input值和最大input值之间具有相等宽度的5个箱。
input值是1,2和1.因此,bin“1到2”包含两个出现(两个1
值),并且bin“2到3”包含一个出现( 2
)。 这些结果在返回的元组的第一项中: array([0, 2, 1])
。
由于这里的容器宽度相等,因此可以使用每个小节高度的出现次数。 当绘制时,你会有:
- 在X轴上的范围/仓[0,1]的高度为0的条,
- 范围/ bin的高度2的条[1,2],
- 范围/ bin的高度为1的条[2,3]。
你可以用Matplotlib直接绘制它(它的hist
函数也返回bin和values):
>>> import matplotlib.pyplot as plt >>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3]) (array([0, 2, 1]), array([0, 1, 2, 3]), <a list of 3 Patch objects>) >>> plt.show()
import numpy as np hist, bin_edges = np.histogram([1, 1, 2, 2, 2, 2, 3], bins = range(5))
在下面, hist
表示在仓#0中有0个项,在仓#1中有2个,在仓#3中有4个,在仓#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]))
玩上面的代码,将input改为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()