mars.tensor.std#

mars.tensor.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=None, combine_size=None)[来源]#

计算指定轴上的标准偏差。

返回标准差,分布的扩散度量, tensor 元素的标准差默认为扁平化 tensor 计算,否则在指定的轴上计算。

Parameters
  • a (array_like) – 计算这些值的标准差。

  • axis (Noneinttupleints, 可选) –

    计算标准差的轴。默认情况下,计算扁平化张量的标准差。

    如果这是一个整数的元组,则将在多个轴上执行标准差,而不是像以前那样在单个轴或所有轴上执行。

  • dtype (dtype, 可选) – 用于计算标准差的类型。对于整型张量,默认值为 float64,对于浮点类型张量,默认为与数组类型相同。

  • out (张量, 可选) – 替代输出张量,用于放置结果。它必须具有与预期输出相同的形状,但类型(计算值的类型)将在必要时进行转换。

  • ddof (int, 可选) – 表示自由度的增量。计算中使用的除数是 N - ddof,其中 N 代表元素的数量。默认情况下 ddof 为零。

  • keepdims (bool, 可选) –

    如果设置为 True,则被缩减的轴在结果中保留为大小为1的维度。使用此选项,结果将正确地与输入张量广播。

    如果传递默认值,则 keepdims 不会被传递到 Tensor 子类的 std 方法中,但任何非默认值将会被传递。如果子类的 sum 方法未实现 keepdims,将引发任何异常。

  • combine_size (int, 可选) – 拼接的块数。

Returns

standard_deviation – 如果 out 是 None,返回一个包含标准差的新张量,否则返回对输出数组的引用。

Return type

张量,请参见上面的 dtype 参数。

另请参阅

var, mean, nanmean, nanstd, nanvar

备注

标准差是离均值的平方偏差的平均值的平方根,即,std = sqrt(mean(abs(x - x.mean())**2))

平均平方偏差通常计算为 x.sum() / N,其中 N = len(x)。然而,如果指定了 ddof, 则使用除数 N - ddof 代替。在标准统计 实践中,ddof=1 提供了无限总体方差的无偏估计量。 ddof=0 提供了正态分布变量方差的最大似然 估计。该函数计算的标准偏差是 估计方差的平方根,因此即使 ddof=1,它也不会是 标准偏差本身的无偏估计。

请注意,对于复数,std 在平方之前取绝对值,因此结果始终是实数且非负。

对于浮点数输入,std 是使用输入具有的相同精度计算的。根据输入数据的不同,这可能导致结果不准确,特别是对于 float32(见下面的例子)。使用 dtype 关键字指定更高精度的累加器可以缓解这个问题。

示例

>>> import mars.tensor as mt
>>> a = mt.array([[1, 2], [3, 4]])
>>> mt.std(a).execute()
1.1180339887498949
>>> mt.std(a, axis=0).execute()
array([ 1.,  1.])
>>> mt.std(a, axis=1).execute()
array([ 0.5,  0.5])

在单精度下,std()可能不准确:

>>> a = mt.zeros((2, 512*512), dtype=mt.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> mt.std(a).execute()
0.45000005

在float64中计算标准差更加准确:

>>> mt.std(a, dtype=mt.float64).execute()
0.44999999925494177