maxframe.tensor.mean#

maxframe.tensor.mean(a, axis=None, dtype=None, out=None, keepdims=None)[源代码]#

沿指定轴计算算术平均值。

返回数组元素的平均值。默认情况下,平均值是在展平的张量上计算的,否则在指定轴上计算。对于整数输入,使用 float64 中间和返回值。

参数:
  • a (array_like) -- 包含要求平均值的数字的张量。如果 a 不是张量,则尝试进行转换。

  • axis (None or int or tuple of ints, optional) -- 计算平均值的轴。默认是计算展平数组的平均值。如果这是一个整数元组,则对多个轴执行平均值计算,而不是像以前那样对单个轴或所有轴执行。

  • dtype (data-type, optional) -- 计算平均值时使用的类型。对于整数输入,默认为 float64;对于浮点输入,它与输入的 dtype 相同。

  • out (Tensor, optional) -- 用于放置结果的替代输出张量。默认为 None;如果提供,则其形状必须与预期输出相同,但必要时会进行类型转换。详情请参见 doc.ufuncs

  • keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴作为大小为一的维度。使用此选项时,结果将能正确地与输入张量进行广播。如果传递的是默认值,则 keepdims 不会传递给 Tensor 子类的 mean 方法,但任何非默认值则会传递。如果子类的 sum 方法未实现 keepdims,则将引发异常。

返回:

m -- 如果 out=None,则返回包含平均值的新张量,否则返回对输出数组的引用。

返回类型:

Tensor, see dtype parameter above

参见

average

加权平均

std, var, nanmean, nanstd, nanvar

备注

算术平均值是沿轴的元素之和除以元素数量。

请注意,对于浮点输入,平均值是使用输入的相同精度计算的。根据输入数据的不同,这可能导致结果不准确,特别是对于 float32 (见下面的示例)。通过使用 dtype 关键字指定更高精度的累加器可以缓解此问题。

默认情况下,float16 结果使用 float32 中间值进行计算以提高精度。

示例

>>> import maxframe.tensor as mt
>>> a = mt.array([[1, 2], [3, 4]])
>>> mt.mean(a).execute()
2.5
>>> mt.mean(a, axis=0).execute()
array([ 2.,  3.])
>>> mt.mean(a, axis=1).execute()
array([ 1.5,  3.5])

在单精度下,mean 可能不准确:

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

使用 float64 计算平均值更准确:

>>> mt.mean(a, dtype=mt.float64).execute()
0.55000000074505806