Python的numpy模块提供了一个名为numpy.average()的函数,用于沿指定轴计算加权平均值。

语法:

numpy.average(a, axis=None, weights=None, returned=False)

参数:

x: array_like

这个参数定义了要计算平均值的源数组。如果'x'是一个数组,将尝试进行转换。

axis: int或None或int元组(可选)

这个参数定义了计算平均值的轴。默认情况下,轴被设置为None,将计算源数组的所有元素的平均值。当axis的值为负数时,计数从末尾到起始轴开始。

weights : array_like(可选)

这个参数定义了一个包含与数组值关联的权重的数组。数组元素的每个值都会根据其关联的权重进行平均。加权数组可以是一维的,也可以与输入数组具有相同的形状。当数组元素没有关联的权重时,权重将对所有元素均视为1。

returned: bool(可选)

默认情况下,这个参数设置为False。如果设置为True,将返回平均值和权重的总和的元组。如果为False,则只返回平均值。如果权重没有值,加权和等同于元素数量。

返回值:

retval, [sum_of_weights]: array_type或double

这个函数返回平均值或平均值和权重总和,具体取决于返回参数。

异常:

ZeroDivisionError

当沿轴的所有权重都设置为零时,会引发此错误。

TypeError

当加权数组的长度与输入数组的形状不同时,会引发此错误。

示例1:

import numpy as np  
data = list(range(1,6))  
output=np.average(data)  
data  
output  

输出:

[1, 2, 3, 4, 5]
3.0

在上面的代码中:

  • 我们导入了别名为np的numpy。
  • 我们创建了一个元素列表'data'
  • 我们声明了变量'output',并将average()函数的返回值赋值给它。
  • 我们在函数中传递了列表'data'
  • 最后,我们尝试打印'data''output'

输出中显示了列表元素的平均值。

示例2:

import numpy as np  
output=np.average(range(1,16), weights=range(15,0,-1))  
output  

输出:

5.666666666666667

示例3:

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])

在上面的代码中:

  • 我们导入了别名为np的numpy。
  • 我们使用arange()np.reshape()函数创建了一个数组'data'
  • 我们声明了变量'output',并将average()函数的返回值赋值给它。
  • 我们在函数中传递了数组'data',将axis设置为1,并在函数中传递了加权数组。
  • 最后,我们尝试打印'data''output'

输出中显示了数组中每列元素的平均值。

示例4:

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 "<stdin>", line 1, in <module>
  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.

注意:输出显示了一个类型错误:“Axis must be specified when shapes of data and weights differ”,因为'weights'数组的形状与输入数组'data'不同。

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶