How does numpy.histogram() work?
在阅读numpy时,我遇到了函数
它是做什么用的,它是如何工作的? 在文档中,他们提到了垃圾箱:它们是什么?
一些谷歌搜索使我大致了解直方图的定义。 我明白了。 但不幸的是,我无法将这些知识与文档中给出的示例联系起来。
bin是一个范围,代表直方图的单个条形沿X轴的宽度。您也可以将其称为间隔。 (维基百科更正式地将它们定义为"不相交的类别"。)
Numpy
在此示例中:
1 | np.histogram([1, 2, 1], bins=[0, 1, 2, 3]) |
共有3个档位,其值分别从0到1(不包括1),1到2(不包括2)和2到3(包括3)。在本示例中,如果Numpy通过给出定界符列表(
输入值为1、2和1。因此,仓" 1至2"包含两次出现(两个
由于此处的垃圾箱宽度相等,因此您可以使用出现次数来表示每个条形的高度。绘制时,您将具有:
- X轴上范围/ bin [0,1]的高度为0的条,
- 范围/箱[1,2]的高度为2的条,
- 范围/箱[2,3]的高度为1的条。
您可以直接使用Matplotlib绘制此图(其
1 2 3 4 | >>> import matplotlib.pyplot as plt >>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3]) (array([0, 2, 1]), array([0, 1, 2, 3]), ) >>> plt.show() |
1 2 | import numpy as np hist, bin_edges = np.histogram([1, 1, 2, 2, 2, 2, 3], bins = range(5)) |
下面的
1 2 | print(hist) # array([0, 2, 4, 1]) |
bin#3是[3,4)。
1 2 | print (bin_edges) # array([0, 1, 2, 3, 4])) |
播放上面的代码,将输入更改为
但是一张图片值得一千个字:
1 2 3 4 | import matplotlib.pyplot as plt plt.bar(bin_edges[:-1], hist, width = 1) plt.xlim(min(bin_edges), max(bin_edges)) plt.show() |
1 2 3 4 5 | arr = np.random.randint(1, 51, 500) y, x = np.histogram(arr, bins=np.arange(51)) fig, ax = plt.subplots() ax.plot(x[:-1], y) fig.show() |
这对于可视化直方图可能是一种有用的方法,在这种情况下,您希望获得更高的粒度级别,而无需到处都是条形。在图像直方图中用于识别极端像素值非常有用。