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?
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
...
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.
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