📅  最后修改于: 2020-10-27 08:50:52             🧑  作者: Mango
Python的numpy模块提供了一个名为numpy.average()的函数,用于计算沿指定轴的加权平均值。
numpy.average(a, axis=None, weights=None, returned=False)
x:类似数组
此参数定义了我们要计算其元素平均值的源数组。如果’x’是一个数组,将尝试进行转换。
轴:整数或无或整数元组(可选)
此参数定义将沿其计算平均值的轴。默认情况下,该轴设置为“无”,它将计算源数组中所有元素的平均值。当轴的值为负时,计数从起点到起点开始。
权重:array_like(可选)
此参数定义一个数组,其中包含与数组值关联的权重。数组元素的每个值一起根据其关联的权重得出平均值。加权数组可以是一维数组,也可以是与输入数组相同的形状。如果没有与数组元素关联的权重,则所有元素的权重将被视为1。
返回:bool(可选)
默认情况下,此参数设置为False。如果将其设置为True,则将返回一个平均值和sum_of_weights元组。如果为False,则返回平均值。如果没有权重值,则加权和等于元素数。
retval,[sum_of_weights]:array_type或double
此函数返回平均值,或者均取决于返回参数的平均值和sum_of_weights。
ZeroDivisionError
当沿轴的所有权重设置为零时,会引发此错误。
TypeError
当加权数组的长度与输入数组的形状不同时,会引发此错误。
import numpy as np
data = list(range(1,6))
output=np.average(data)
data
output
输出:
[1, 2, 3, 4, 5]
3.0
在上面的代码中:
在输出中,它显示列表元素的平均值。
import numpy as np
output=np.average(range(1,16), weights=range(15,0,-1))
output
输出:
5.666666666666667
import numpy as np
data=np.arange(12).reshape((4,3))
output = np.average(data, axis=1, weights=[1./4, 3./4, 5./4])
data
output
输出:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
array([ 1.44444444, 4.44444444, 7.44444444, 10.44444444])
在上面的代码中:
在输出中,它显示了数组中每个列元素的平均值。
import numpy as np
data=np.arange(12).reshape((4,3))
data
np.average(data, weights=[1./4, 3./4, 5./4])
输出:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\numpy\lib\function_base.py", line 406, in average
"Axis must be specified when shapes of data and weights."
TypeError: Axis must be specified when shapes of data and weights differ.
注意:输出显示类型错误:“当数据的形状和权重不同时必须指定轴”,因为“权重”数组的形状与输入数组“数据”不同。