Python numpy.average函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中average方法的使用。

numpy.average

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

计算沿指定轴的加权平均值。

参数 :

a :array_like

包含要求平均值的数据的数组。如果a不是数组,

则尝试进行转换。

axisNone int 或 int类型的tuple, 可选

平均a的一个或多个轴。

默认值axis = None

将对输入数组的所有元素求平均值。

如果轴为负,则从最后一个轴开始计数。 

1.7.0版中的新功能。 如果axis是int的元组,

则对元组中指定的所有轴,

而不是以前的单个轴或所有轴执行平均。

weights :array_like, 可选

与a中的值相关联的权重数组。

a中的每个值根据其关联的权重对平均值作出贡献。

weights数组可以是1-D(在这种情况下,

它的长度必须是沿着给定轴的a的大小),

也可以是与a相同的形状。如果weights=None

那么假设a中的所有数据的权值都等于1。一维计算为:

avg = sum(a * weights) / sum(weights)

returned :bool, 可选

默认值为False。 如果为True,

则返回元组(平均值,sum_of_weights),

否则仅返回average。 

如果weights = None,

sum_of_weights等于采用平均值的元素数。

返回值 :

retval, [sum_of_weights] :array_type 或 double

返回沿指定轴的平均值。当返回True时,

返回一个以平均值为第一个元素,

权重之和为第二个元素的元组。

 sum_of_weights与retval具有相同的类型。

结果dtype遵循一般模式。如果weights为None,

则结果dtype将为a,或者如果a为整数,

则为float64。否则,如果权重不是None并且a是非整数,

则结果类型将是能够表示a和权重的值的最低精度类型。

如果a碰巧是整数,则以前的规则仍然适用,

但结果dtype至少为float64。

Raises :

ZeroDivisionError

沿轴的所有权重均为零时。

请参阅numpy.ma.average

以获取针对此类错误的可靠版本。

TypeError

一维权重的长度与沿轴的形状不同时。

例子

>>> data = np.arange(1, 5)
>>> data
array([1, 2, 3, 4])
>>> np.average(data)
2.5
>>> np.average(np.arange(1, 11), weights=np.arange(10, 0, -1))
4.0
>>> data = np.arange(6).reshape((3,2))
>>> data
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> np.average(data, axis=1, weights=[1./4, 3./4])
array([0.75, 2.75, 4.75])
>>> np.average(data, weights=[1./4, 3./4])
Traceback (most recent call last):
    ...
TypeError: Axis must be specified when shapes of a and weights differ.
>>> a = np.ones(5, dtype=np.float128)
>>> w = np.ones(5, dtype=np.complex64)
>>> avg = np.average(a, weights=w)
>>> print(avg.dtype)
complex256
推荐阅读
cjavapy编程之路首页