原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
校对:(虚位以待)
numpy.
histogram
(a, bins=10, range=None, normed=False, weights=None, density=None)[source]计算一组数据的直方图。
参数: | a:array_like
bins:int或标量序列或str,可选
范围:(float,float),可选
normed:bool,可选
权重:array_like,可选
密度:bool,可选
|
---|---|
返回: | hist:数组
bin_edges:dtype float的数组
|
笔记
除了最后一个(最右边的)bin都是半开的。换句话说,如果bin是:
[1, 2, 3, 4]
那么第一个仓是[1, 2)
(包括1,但不包括2),第二个, 3)
。然而,最后一个仓是[3, 4]
,其中包括 4。
版本1.11.0中的新功能。
估计箱的最佳数量的方法在文献中是充分的,并且受到直方图可视化的选择R的启发。注意,具有与成比例的二进制数的数目是渐近最优的,这就是为什么其出现在大多数估计器中的原因。这些是简单的插入方法,为块数量提供良好的起点。在下面的等式中,是binwidth,是bin的个数。使用数据的ptp
将计算bin数的所有估计值重新转换为bin宽度。最终bin计数从`` np.round(np.ceil(range / h))获得。
binwidth与四分位距(IQR)成正比,与a.size的立方根成反比。对于小型数据集可能过于保守,但对大型数据集非常有用。IQR对异常值非常鲁棒。
binwidth与数据的标准偏差成比例,并且与x.size
的立方根成反比。对于小型数据集可能过于保守,但对大型数据集非常有用。标准偏差对异常值不是非常鲁棒。值在没有异常值的情况下与Freedman-Diaconis估计量非常相似。
二进制数的数量仅与a.size
的立方根成正比。它倾向于高估仓的数量,并且不考虑数据变异性。
仓的数量是a.size
的基础2对数。该估计量假定数据的正态性,并且对于较大的非正态数据集过于保守。这是R的hist
方法中的默认方法。
Sturges公式的改进版本,对非正态数据集产生更好的估计。该估计器尝试解释数据的偏斜。
最简单和最快的估计。只考虑数据大小。
例子
>>> 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中的新功能。
自动仓选择方法示例,使用2个具有2000点的峰值随机数据:
>>> import matplotlib.pyplot as plt
>>> 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') # plt.hist passes it's arguments to np.histogram
>>> plt.title("Histogram with 'auto' bins")
>>> plt.show()