numpy.histogram#

numpy.histogram(a, bins=10, range=None, density=None, weights=None)[源代码]#

计算数据集的直方图.

参数:
aarray_like

输入数据.直方图是基于展平数组计算的.

bins整数或标量序列或字符串,可选

如果 bins 是一个整数,它定义了给定范围内等宽的箱数(默认是10).如果 bins 是一个序列,它定义了一个单调递增的箱边缘数组,包括最右边的边缘,允许非均匀的箱宽度.

在 1.11.0 版本加入.

如果 bins 是一个字符串,它定义了用于计算最佳箱宽的方法,如 histogram_bin_edges 所定义.

range(浮点数, 浮点数), 可选

箱的下限和上限范围.如果没有提供,范围仅仅是 (a.min(), a.max()).范围外的值被忽略.范围的第一个元素必须小于或等于第二个.`range` 也会影响自动箱计算.虽然箱宽是基于 range 内的实际数据计算为最佳,但箱数将填充整个范围,包括不包含数据的部分.

weightsarray_like, 可选

一个权重数组,形状与 a 相同.`a` 中的每个值仅将其相关权重贡献给箱计数(而不是 1).如果 density 为 True,则权重会被归一化,使得密度在范围内的积分保持为 1.请注意,`weights` 的 dtype 也将成为返回的累加器 (hist) 的 dtype,因此它必须足够大以容纳累加值.

density布尔值, 可选

如果 False,结果将包含每个箱子中的样本数量.如果 True,结果是箱子处的概率 密度 函数值,归一化使得在整个范围内的 积分 为 1.注意,直方图值的总和将不等于 1,除非选择单位宽度的箱子;它不是一个概率 质量 函数.

返回:
hist数组

直方图的值.请参阅 densityweights 以了解可能的语义描述.如果给出了 weights,``hist.dtype`` 将从 weights 中获取.

bin_edgesdtype 为 float 的数组

返回箱边 (length(hist)+1).

备注

除了最后一个(最右边的)箱子是半开的.换句话说,如果 bins 是:

[1, 2, 3, 4]

那么第一个区间是 [1, 2)``(包括 1,但不包括 2),第二个是 ``[2, 3).然而,最后一个区间是 [3, 4],它 包括 4.

示例

>>> import numpy as np
>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
>>> np.histogram(np.arange(4), bins=np.arange(5), density=True)
(array([0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
>>> np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
(array([1, 4, 1]), array([0, 1, 2, 3]))
>>> a = np.arange(5)
>>> hist, bin_edges = np.histogram(a, density=True)
>>> hist
array([0.5, 0. , 0.5, 0. , 0. , 0.5, 0. , 0.5, 0. , 0.5])
>>> hist.sum()
2.4999999999999996
>>> np.sum(hist * np.diff(bin_edges))
1.0

在 1.11.0 版本加入.

自动分箱选择方法示例,使用具有2000个点的2峰随机数据.

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.RandomState(10)  # deterministic random data
a = np.hstack((rng.normal(size=1000),
               rng.normal(loc=5, scale=2, size=1000)))
plt.hist(a, bins='auto')  # arguments are passed to np.histogram
plt.title("Histogram with 'auto' bins")
plt.show()
../../_images/numpy-histogram-1.png