本文简要介绍 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 为直方图可视化提供的选择的启发。请注意,箱数与
ptp
重新转换为 bin 宽度。最终的 bin 计数从np.round(np.ceil(range / h))
获得。最终的箱宽度通常小于下面的估计器返回的宽度。 成比例是渐近最优的,这就是它出现在大多数估计器中的原因。这些只是简单的插件方法,为 bin 数量提供了良好的起点。在下面的等式中, 是 bin 宽度, 是 bin 数量。所有计算 bin 计数的估计器都使用数据的妥协以获得良好的值。对于小型数据集,通常会选择 Sturges 值,而较大的数据集通常会默认为 FD。避免 FD 和 Sturges 分别针对小型和大型数据集的过于保守的行为。切换点通常是 。
binwidth 与四分位距 (IQR) 成正比,与 a.size 的立方根成反比。对于小数据集可能过于保守,但对于大数据集来说非常好。 IQR 对异常值非常稳健。
binwidth 与数据的标准偏差成正比,与
x.size
的立方根成反比。对于小数据集可能过于保守,但对于大数据集来说非常好。标准差对异常值不是很稳健。在没有异常值的情况下,值与 Freedman-Diaconis 估计量非常相似。bin 的数量仅与
a.size
的立方根成正比。它倾向于高估 bin 的数量,并且没有考虑数据的可变性。bin 的数量是
a.size
的以 2 为底的日志。该估计器假设数据是正态的,对于较大的非正态数据集来说过于保守。这是 R 的hist
方法中的默认方法。Sturges 公式的改进版本,可为非正态数据集生成更好的估计。该估计器试图解释数据的偏斜。
最简单和最快的估计器。只考虑数据大小。
‘auto’(‘sturges’ 和 ‘fd’ 估计量的最大值):
‘fd’(Freedman Diaconis 估计器):
‘scott’:
‘rice’:
‘sturges’:
‘doane’:
‘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. ])
相关用法
- Python numpy histogramdd用法及代码示例
- Python numpy histogram2d用法及代码示例
- Python numpy histogram用法及代码示例
- Python numpy hamming用法及代码示例
- Python numpy hermite.hermfromroots用法及代码示例
- Python numpy hermite_e.hermediv用法及代码示例
- Python numpy hsplit用法及代码示例
- Python numpy hermite.hermline用法及代码示例
- Python numpy hermite.hermpow用法及代码示例
- Python numpy hermite.hermx用法及代码示例
- Python numpy hermite_e.hermefromroots用法及代码示例
- Python numpy hermite.hermmul用法及代码示例
- Python numpy hermite.herm2poly用法及代码示例
- Python numpy hermite.hermsub用法及代码示例
- Python numpy hermite_e.hermeline用法及代码示例
- Python numpy hermite_e.hermeint用法及代码示例
- Python numpy hermite_e.hermeadd用法及代码示例
- Python numpy hstack用法及代码示例
- Python numpy hermite_e.poly2herme用法及代码示例
- Python numpy hermite.hermdiv用法及代码示例
- Python numpy hermite_e.hermevander用法及代码示例
- Python numpy hermite_e.hermepow用法及代码示例
- Python numpy hermite.poly2herm用法及代码示例
- Python numpy hermite_e.hermetrim用法及代码示例
- Python numpy hermite_e.hermezero用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.histogram_bin_edges。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。