maxframe.tensor.nanvar#
- maxframe.tensor.nanvar(a, axis=None, dtype=None, out=None, ddof=0, keepdims=None)[源代码]#
沿指定轴计算方差,同时忽略 NaN。
返回张量元素的方差,用于衡量分布的离散程度。默认情况下,方差是针对展平后的张量计算的,否则就在指定轴上进行计算。
对于全为 NaN 的切片或自由度为零的切片,将返回 NaN 并引发 RuntimeWarning。
- 参数:
a (array_like) -- 包含所需方差数值的张量。如果 a 不是一个张量,则会尝试进行转换。
axis (int, optional) -- 计算方差所沿用的轴。默认情况下,是计算展平后数组的方差。
dtype (data-type, optional) -- 用于计算方差的数据类型。对于整数类型的张量,默认为 float32;对于浮点类型的张量,则与张量类型相同。
out (Tensor, optional) -- 用于放置结果的替代输出张量。它必须与期望输出具有相同的形状,如有必要,类型会被转换。
ddof (int, optional) -- “Delta 自由度”:计算中使用的除数是
N - ddof,其中N表示非 NaN 元素的数量。默认情况下,ddof 为零。keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴,其大小为 1。使用此选项时,结果将能正确地与原始 a 进行广播。
- 返回:
方差 —— 如果 out 为 None,则返回一个包含方差的新张量;否则返回对输出张量的引用。如果 ddof >= 切片中的非 NaN 元素数量,或者切片只包含 NaN,则该切片的结果为 NaN。
- 返回类型:
Tensor, see dtype parameter above
备注
方差是与均值的平方偏差的平均值,即
var = mean(abs(x - x.mean())**2)。通常均值是按
x.sum() / N来计算的,其中N = len(x)。但如果指定了 ddof,则使用除数N - ddof。在标准统计实践中,ddof=1提供了假设无限总体方差的无偏估计;而ddof=0则为正态分布变量的方差提供了最大似然估计。请注意,对于复数,在平方之前先取绝对值,因此结果始终为实数且非负。
对于浮点数输入,方差是以输入数据相同的精度进行计算的。根据输入数据的不同,这可能导致结果不准确,尤其是对于 float32`(参见下面的示例)。通过使用 ``dtype` 关键字指定更高精度的累加器可以缓解这一问题。
为了让此函数能在 Tensor 的子类上正常工作,它们必须定义带有关键字参数 keepdims 的 sum 方法。
示例
>>> import maxframe.tensor as mt
>>> a = mt.array([[1, mt.nan], [3, 4]]) >>> mt.nanvar(a).execute() 1.5555555555555554 >>> mt.nanvar(a, axis=0).execute() array([ 1., 0.]) >>> mt.nanvar(a, axis=1).execute() array([ 0., 0.25])