在阅读numpy时,我遇到了函数numpy.histogram()
。
它是做什么用的,它是如何工作的?他们在文档中提到了bin:它们是什么?
在阅读numpy时,我遇到了函数numpy.histogram()
。
它是做什么用的,它是如何工作的?他们在文档中提到了bin:它们是什么?
Answers:
bin是一个范围,代表直方图的单个条形沿X轴的宽度。您也可以将其称为间隔。(维基百科更正式地将它们定义为“不相交的类别”。)
脾气暴躁 histogram
函数不会绘制直方图,但是会计算落在每个仓中的输入数据的出现次数,这反过来又确定了每个条的面积(如果仓的宽度不相等,则不一定是高度)。
在此示例中:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
共有3个档位,其值分别从0到1(不包括1),1到2(不包括2)和2到3(包括3)。[0, 1, 2, 3]
在本示例中,Numpy通过给出定界符列表()来定义这些bin ,尽管它也会返回结果中的bin,因为如果未指定,则可以从输入中自动选择它们。如果bins=5
,例如,它会使用5桶相等宽度传播的最小输入值和最高输入值之间。
输入值为1、2和1。因此,仓“ 1至2”包含两个事件(两个1
值),仓“ 2至3”包含一个事件(2
)。这些结果在返回的元组的第一项中array([0, 2, 1])
。
由于此处的垃圾箱宽度相等,因此可以将出现次数用于每个条形的高度。绘制时,您将具有:
您可以直接使用Matplotlib绘制此图(它的hist
函数还会返回垃圾箱和值):
>>> 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()
bins
值更改为数组中的最大值。
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]))
玩上面的代码,将输入更改为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()
plt.bar(bin_edges[:-1], hist, width=1)
和plt.xlim(min(bin_edges), max(bin_edges))
,以使条形图适合其期望的宽度(否则,可能会有一个较小的bin,中间没有任何值)。