web-dev-qa-db-fra.com

np.mean () vs np.average () dans Python NumPy?

Je remarque que

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

Cependant, il devrait y avoir quelques différences, car après tout, ce sont deux fonctions différentes.

Quelles sont les différences entre eux?

161
Sibbs Gambling

np.average prend un paramètre de poids optionnel. Si ce n'est pas fourni, ils sont équivalents. Regardez le code source: Moyenne , Moyenne

np.mean:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.average:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    #code that does weighted mean here

if returned: #returned is another optional argument
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...
157
Hammer

np.mean calcule toujours une moyenne arithmétique et offre des options supplémentaires pour l'entrée et la sortie (par exemple, quels types de données utiliser, où placer le résultat).

np.average peut calculer une moyenne pondérée si le paramètre weights est fourni.

22
Amber

Dans certaines versions de numpy il y a une autre différence importante à prendre en compte:

average ne prend pas en compte les masques, calculez donc la moyenne sur l'ensemble des données.

mean prend en compte les masques, calculez donc la moyenne uniquement sur les valeurs non masquées.

g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)

np.average(f)
Out: 34.0

np.mean(f)
Out: 2.0
18
G M

Dans votre appel, les deux fonctions sont les mêmes.

average peut toutefois calculer une moyenne pondérée.

Liens de document: mean et average

2
Prashant Kumar