当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy histogram_bin_edges用法及代码示例


本文简要介绍 python 语言中 numpy.histogram_bin_edges 的用法。

用法:

numpy.histogram_bin_edges(a, bins=10, range=None, weights=None)

仅计算 histogram 函数使用的 bin 边的函数。

参数

a array_like

输入数据。直方图是在展平的数组上计算的。

bins int 或标量序列或 str,可选

如果 bins 是一个 int,它定义给定范围内的 equal-width bins 的数量(默认为 10)。如果 bins 是一个序列,它定义了 bin 边,包括最右边的边,允许不均匀的 bin 宽度。

如果箱子是下面列表中的一个字符串,histogram_bin_edges将使用选择的方法来计算最佳 bin 宽度,从而计算 bin 的数量(参见注意有关估计器的更多详细信息)来自位于请求范围内的数据。虽然 bin 宽度对于范围内的实际数据是最佳的,但将计算 bin 的数量以填充整个范围,包括空白部分。对于可视化,建议使用‘auto’ 选项。自动 bin 大小选择不支持加权数据。

‘auto’

‘sturges’ 和 ‘fd’ 估计量的最大值。提供良好的全方位性能。

‘fd’(Freedman Diaconis 估计器)

考虑数据可变性和数据大小的稳健(对异常值有弹性)估计器。

‘doane’

Sturges 估计器的改进版本,可以更好地处理非正态数据集。

‘scott’

考虑到数据可变性和数据大小的不太稳健的估计器。

‘stone’

基于积分平方误差的留一法交叉验证估计的估计器。可以看作是斯科特规则的概括。

‘rice’

估计器不考虑可变性,只考虑数据大小。通常会高估所需的箱子数量。

‘sturges’

R 的默认方法,只考虑数据大小。仅适用于高斯数据,并低估了大型非高斯数据集的 bin 数量。

‘sqrt’

平方根(数据大小)估计器,因其速度和简单性而被 Excel 和其他程序使用。

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

bin 的下限和上限范围。如果没有提供,范围很简单(a.min(), a.max()).超出范围的值将被忽略。范围的第一个元素必须小于或等于第二个元素。范围也会影响自动 bin 计算。虽然根据内部的实际数据计算出 bin 宽度是最佳的范围, bin 计数将填充整个范围,包括不包含数据的部分。

weights 数组,可选

一组权重,与 a 的形状相同。 a 中的每个值仅将其相关权重贡献给 bin 计数(而不是 1)。这目前没有被任何 bin 估计器使用,但将来可能会使用。

返回

bin_edges dtype 浮点数组

要传递到 histogram 的边

注意

估计最佳箱数的方法在文献中已有充分依据,并且受到 R 为直方图可视化提供的选择的启发。请注意,箱数与 成比例是渐近最优的,这就是它出现在大多数估计器中的原因。这些只是简单的插件方法,为 bin 数量提供了良好的起点。在下面的等式中, 是 bin 宽度, 是 bin 数量。所有计算 bin 计数的估计器都使用数据的 ptp 重新转换为 bin 宽度。最终的 bin 计数从 np.round(np.ceil(range / h)) 获得。最终的箱宽度通常小于下面的估计器返回的宽度。

‘auto’(‘sturges’ 和 ‘fd’ 估计量的最大值)

妥协以获得良好的值。对于小型数据集,通常会选择 Sturges 值,而较大的数据集通常会默认为 FD。避免 FD 和 Sturges 分别针对小型和大型数据集的过于保守的行为。切换点通常是

‘fd’(Freedman Diaconis 估计器)

binwidth 与四分位距 (IQR) 成正比,与 a.size 的立方根成反比。对于小数据集可能过于保守,但对于大数据集来说非常好。 IQR 对异常值非常稳健。

‘scott’

binwidth 与数据的标准偏差成正比,与 x.size 的立方根成反比。对于小数据集可能过于保守,但对于大数据集来说非常好。标准差对异常值不是很稳健。在没有异常值的情况下,值与 Freedman-Diaconis 估计量非常相似。

‘rice’

bin 的数量仅与 a.size 的立方根成正比。它倾向于高估 bin 的数量,并且没有考虑数据的可变性。

‘sturges’

bin 的数量是 a.size 的以 2 为底的日志。该估计器假设数据是正态的,对于较大的非正态数据集来说过于保守。这是 R 的 hist 方法中的默认方法。

‘doane’

Sturges 公式的改进版本,可为非正态数据集生成更好的估计。该估计器试图解释数据的偏斜。

‘sqrt’

最简单和最快的估计器。只考虑数据大小。

例子

>>> arr = np.array([0, 0, 0, 1, 2, 3, 3, 4, 5])
>>> np.histogram_bin_edges(arr, bins='auto', range=(0, 1))
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
>>> np.histogram_bin_edges(arr, bins=2)
array([0. , 2.5, 5. ])

为了与直方图保持一致,预先计算的 bin 数组未经修改地通过:

>>> np.histogram_bin_edges(arr, [1, 2])
array([1, 2])

此函数允许计算一组 bin,并在多个直方图中重复使用:

>>> shared_bins = np.histogram_bin_edges(arr, bins='auto')
>>> shared_bins
array([0., 1., 2., 3., 4., 5.])
>>> group_id = np.array([0, 1, 1, 0, 1, 1, 0, 1, 1])
>>> hist_0, _ = np.histogram(arr[group_id == 0], bins=shared_bins)
>>> hist_1, _ = np.histogram(arr[group_id == 1], bins=shared_bins)
>>> hist_0; hist_1
array([1, 1, 0, 1, 0])
array([2, 0, 1, 1, 2])

与为每个直方图使用单独的 bin 相比,这提供了更容易比较的结果:

>>> hist_0, bins_0 = np.histogram(arr[group_id == 0], bins='auto')
>>> hist_1, bins_1 = np.histogram(arr[group_id == 1], bins='auto')
>>> hist_0; hist_1
array([1, 1, 1])
array([2, 1, 1, 2])
>>> bins_0; bins_1
array([0., 1., 2., 3.])
array([0.  , 1.25, 2.5 , 3.75, 5.  ])

相关用法


注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.histogram_bin_edges。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。