binned_statistic_2d#
- scipy.stats.binned_statistic_2d(x, y, values, statistic='mean', bins=10, range=None, expand_binnumbers=False)[source]#
计算一个或多个数据集的双维分箱统计量。
这是 histogram2d 函数的推广。 直方图将空间划分为箱,并返回每个箱中点的数量的计数。 此函数允许计算每个箱内值的总和、平均值、中位数或其他统计量(或值集)。
- 参数:
- x(N,) 类数组
沿第一维度分箱的值序列。
- y(N,) 类数组
沿第二维度分箱的值序列。
- values(N,) 类数组 或 (N,) 类数组 的列表
将在其上计算统计量的数据。 这必须与 x 的形状相同,或者是一个序列列表 - 每个序列的形状与 x 相同。 如果 values 是这样一个列表,则将独立地计算每个列表的统计量。
- statistic字符串 或 可调用对象,可选
要计算的统计量(默认为 ‘mean’)。 以下统计量可用
‘mean’ : 计算每个箱内点的值的平均值。 空箱将表示为 NaN。
‘std’ : 计算每个箱内的标准差。 这是隐式计算的,ddof=0。
‘median’ : 计算每个箱内点的中位数。 空箱将表示为 NaN。
‘count’ : 计算每个箱内点的计数。 这与未加权直方图相同。 不引用 values 数组。
‘sum’ : 计算每个箱内点的值的总和。 这与加权直方图相同。
‘min’ : 计算每个箱内点的最小值。 空箱将表示为 NaN。
‘max’ : 计算每个箱内点的最大值。 空箱将表示为 NaN。
function : 用户定义的函数,它接受一个 1D 值数组,并输出单个数值统计量。 将对每个箱中的值调用此函数。 空箱将表示为 function([]),如果这返回错误,则表示为 NaN。
- binsint 或 [int, int] 或 类数组 或 [数组, 数组],可选
分箱规范
两个维度的箱数 (nx = ny = bins),
每个维度的箱数 (nx, ny = bins),
两个维度的箱边缘 (x_edge = y_edge = bins),
每个维度的箱边缘 (x_edge, y_edge = bins)。
如果指定了箱边缘,则箱数为 (nx = len(x_edge)-1, ny = len(y_edge)-1)。
- range(2,2) 类数组,可选
每个维度上箱的最左边和最右边的边缘(如果未在 bins 参数中明确指定):[[xmin, xmax], [ymin, ymax]]。 此范围之外的所有值都将被视为异常值,并且不会在直方图中进行统计。
- expand_binnumbersbool,可选
‘False’ (默认):返回的 binnumber 是一个形状为 (N,) 的线性化箱索引数组。 ‘True’:返回的 binnumber 被“解开”成一个形状为 (2,N) 的 ndarray,其中每行给出相应维度中的箱号。 请参见 binnumber 返回值,以及 示例 部分。
在版本 0.17.0 中添加。
- 返回:
- statistic(nx, ny) ndarray
每个二维箱中所选统计量的值。
- x_edge(nx + 1) ndarray
沿第一维度的箱边缘。
- y_edge(ny + 1) ndarray
沿第二维度的箱边缘。
- binnumber(N,) 整数数组 或 (2,N) 整数ndarray
这为 sample 的每个元素分配一个整数,该整数表示该观察值所属的箱。 表示形式取决于 expand_binnumbers 参数。 有关详细信息,请参见 注释。
注释
Binedges: 除了最后一个(最右边)箱之外的所有箱都是半开的。 换句话说,如果 bins 是
[1, 2, 3, 4]
,则第一个箱是[1, 2)
(包括 1,但不包括 2),第二个箱是[2, 3)
。 但是,最后一个箱是[3, 4]
,它包括 4。binnumber:此返回的参数为 sample 的每个元素分配一个整数,该整数表示它所属的箱。 表示形式取决于 expand_binnumbers 参数。 如果为 ‘False’(默认):返回的 binnumber 是一个形状为 (N,) 的线性化索引数组,该数组将 sample 的每个元素映射到其对应的箱(使用行优先排序)。 请注意,返回的线性化箱索引用于在外部 binedges 上具有额外箱的数组,以捕获定义箱边界之外的值。 如果为 ‘True’:返回的 binnumber 是一个形状为 (2,N) 的 ndarray,其中每行分别指示每个维度的箱位置。 在每个维度中,i 的 binnumber 表示对应的值介于 (D_edge[i-1], D_edge[i]) 之间,其中 ‘D’ 是 ‘x’ 或 ‘y’。
在版本 0.11.0 中添加。
示例
>>> from scipy import stats
使用显式箱边缘计算计数
>>> x = [0.1, 0.1, 0.1, 0.6] >>> y = [2.1, 2.6, 2.1, 2.1] >>> binx = [0.0, 0.5, 1.0] >>> biny = [2.0, 2.5, 3.0] >>> ret = stats.binned_statistic_2d(x, y, None, 'count', bins=[binx, biny]) >>> ret.statistic array([[2., 1.], [1., 0.]])
每个样本放置的箱由返回的 binnumber 参数给出。 默认情况下,这些是线性化箱索引
>>> ret.binnumber array([5, 6, 5, 9])
箱索引也可以使用 expand_binnumbers 参数扩展为每个维度的单独条目
>>> ret = stats.binned_statistic_2d(x, y, None, 'count', bins=[binx, biny], ... expand_binnumbers=True) >>> ret.binnumber array([[1, 1, 1, 2], [1, 2, 1, 1]])
这表明前三个元素属于 xbin 1,第四个元素属于 xbin 2; y 也是如此。