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() 

在这里输入图像说明