scipy.stats.binned_statistic_dd

scipy.stats.binned_statistic_dd(sample, values, statistic='mean', bins=10, range=None, expand_binnumbers=False, binned_statistic_result=None)[源代码]

计算一组数据的多维入库统计。

这是Histogramdd函数的推广。直方图将空间划分为存储箱,并返回每个存储箱中点数的计数。此函数允许计算每个仓位内的值的总和、平均值、中位数或其他统计数据。

参数
samplearray_like

直方图的数据作为长度为D的N个数组的序列传递,或作为(N,D)数组传递。

values(N,)ARRAY_LIKE或(N,)ARRAY_LIKE列表

将计算统计数据的数据。此形状必须与 sample ,或序列列表-每个序列的形状与 sample 。如果 values 都是这样的列表,则将分别对每个列表分别计算统计信息。

statistic字符串或可调用,可选

要计算的统计数据(默认值为“Mean”)。以下统计数据可用:

  • “Mean”:计算每个面元内各点的平均值。空垃圾箱将由NaN代表。

  • “中位数”:计算每个垃圾箱内各点的值的中位数。空垃圾箱将由NaN代表。

  • ‘count’:计算每个bin内的点数。这与未加权的直方图相同。 values 未引用数组。

  • ‘sum’:计算每个bin内的点的值之和。这与加权直方图相同。

  • ‘std’:计算每个仓位内的标准偏差。这是在ddof=0时隐式计算的。如果给定面元内的值数为0或1,则该面元的计算标准偏差值将为0。

  • ‘min’:计算每个bin内的点的最小值。空垃圾箱将由NaN代表。

  • ‘max’:计算每个bin内的点的最大值。空垃圾箱将由NaN代表。

  • 函数:一个用户定义的函数,它接受一维的值数组,并输出单个数值统计数据。将对每个bin中的值调用此函数。空箱将由函数([])表示,如果返回错误,则用NaN表示。

bins序列或正整型,可选

仓位规范必须采用以下形式之一:

  • 描述沿每个维度的仓边的数组序列。

  • 每个维度的箱数(NX,NY,.=箱数)。

  • 所有尺寸的箱数(NX=NY=.=箱数)。

range序列,可选

中未显式给出边时要使用的下面元边缘和上面元边缘的序列 bins 。默认为每个标注上的最小值和最大值。

expand_binnumbers布尔值,可选

‘False’(默认值):返回的 binnumber 是线性化仓位索引的形状(N,i)阵列。‘true’:返回的 binnumber 被“解开”成形状(D,N)ndarray,其中每一行都给出相应维度中的仓号。请参阅 binnumber 返回值,并且 Examples 部分 binned_statistic_2d

binned_statistic_result绑定统计ddResult

上一次调用函数的结果,以便用新值和/或不同的统计重复使用仓边和仓号。要重复使用垃圾箱编号,请执行以下操作: expand_binnumbers 必须已设置为False(默认值)

0.17.0 新版功能.

退货
statisticndarray,形状(nx1,nx2,nx3,.)

每个二维箱中选定统计信息的值。

bin_edgesndarray列表

描述每个维度的(nxi+1)个仓边的D数组列表。

binnumber整数的(n,)数组或整数的(D,N)ndarray

这将分配给的每个元素 sample 一个整数,表示此观察值所在的仓位。表示形式取决于 expand_binnumbers 论点。看见 Notes 有关详细信息,请参阅。

注意事项

边框:除了最后一个(最右边的)边框之外,所有的边框在每个维度上都是半开的。换句话说,如果 bins[1, 2, 3, 4] ,那么第一个垃圾箱是 [1, 2) (包括1个,但不包括2个)和第二个 [2, 3) 。然而,最后一个垃圾箱是 [3, 4] ,其中 包括 4.

binnumber :此返回参数赋值给的每个元素 sample 一个整数,表示它所属的存储箱。表示形式取决于 expand_binnumbers 论点。If‘false’(默认值):返回的 binnumber 是映射每个元素的线性化索引的形状(N,)数组 sample 到其相应的仓位(使用行长排序)。如果为“True”:返回的 binnumber 是形状(D,N)ndarray,其中每行分别表示每个维度的仓位放置。在每个维度中,都有一个二进制数 i 表示相应的值在(Bin_Edges)之间 [D] [i-1] ,bin_edge [D] [i] ),对于每个维度‘D’。

0.11.0 新版功能.

示例

>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> from mpl_toolkits.mplot3d import Axes3D

以600(x,y)坐标数组为例。 binned_statistic_dd 可以处理更高维数的数组 D 。而是一个维度的情节 D+1 是必需的。

>>> mu = np.array([0., 1.])
>>> sigma = np.array([[1., -0.5],[-0.5, 1.5]])
>>> multinormal = stats.multivariate_normal(mu, sigma)
>>> data = multinormal.rvs(size=600, random_state=235412)
>>> data.shape
(600, 2)

创建存储箱并计算每个存储箱中有多少个阵列:

>>> N = 60
>>> x = np.linspace(-3, 3, N)
>>> y = np.linspace(-3, 4, N)
>>> ret = stats.binned_statistic_dd(data, np.arange(600), bins=[x, y],
...                                 statistic='count')
>>> bincounts = ret.statistic

设置条的音量和位置:

>>> dx = x[1] - x[0]
>>> dy = y[1] - y[0]
>>> x, y = np.meshgrid(x[:-1]+dx/2, y[:-1]+dy/2)
>>> z = 0
>>> bincounts = bincounts.ravel()
>>> x = x.ravel()
>>> y = y.ravel()
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111, projection='3d')
>>> with np.errstate(divide='ignore'):   # silence random axes3d warning
...     ax.bar3d(x, y, z, dx, dy, bincounts)

使用新值重用仓号和仓边:

>>> ret2 = stats.binned_statistic_dd(data, -np.arange(600),
...                                  binned_statistic_result=ret,
...                                  statistic='mean')
../../_images/scipy-stats-binned_statistic_dd-1.png