Existe-t-il une méthode de bibliothèque intégrée ou standard en Python permettant de calculer la moyenne arithmétique (un type de moyenne) d'une liste de nombres?
Je ne suis au courant de rien dans la bibliothèque standard. Cependant, vous pourriez utiliser quelque chose comme:
def mean(numbers):
return float(sum(numbers)) / max(len(numbers), 1)
>>> mean([1,2,3,4])
2.5
>>> mean([])
0.0
Numpy, il y a numpy.mean()
.
NumPy a un numpy.mean
qui est une moyenne arithmétique. L'utilisation est aussi simple que cela:
>>> import numpy
>>> a = [1, 2, 4]
>>> numpy.mean(a)
2.3333333333333335
Dans Python 3.4, il existe un nouveau module statistics
. Vous pouvez maintenant utiliser statistics.mean
:
import statistics
print(statistics.mean([1,2,4])) # 2.3333333333333335
Pour les utilisateurs 3.1-3.3, la version d'origine du module est disponible sur PyPI sous le nom stats
. Il suffit de changer statistics
en stats
.
Vous n'avez même pas besoin de Numpy ou Scipy ...
>>> a = [1, 2, 3, 4, 5, 6]
>>> print(sum(a) / len(a))
3
Utilisez scipy:
import scipy;
a=[1,2,4];
print(scipy.mean(a));
Au lieu de lancer pour flotter, vous pouvez faire ce qui suit
def mean(nums):
return sum(nums, 0.0) / len(nums)
ou en utilisant lambda
mean = lambda nums: sum(nums, 0.0) / len(nums)
def avg(l):
"""uses floating-point division."""
return sum(l) / float(len(l))
l1 = [3,5,14,2,5,36,4,3]
l2 = [0,0,0]
print(avg(l1)) # 9.0
print(avg(l2)) # 0.0
def list_mean(nums):
sumof = 0
num_of = len(nums)
mean = 0
for i in nums:
sumof += i
mean = sumof / num_of
return float(mean)
J'ai toujours supposé que avg
est omis de builtins/stdlib car il est aussi simple que
sum(L)/len(L) # L is some list
et toutes les mises en garde seraient traitées dans le code de l'appelant pour une utilisation locale déjà .
Mises en garde notables:
résultat non-float: en python2, 9/4 est 2. pour résoudre, utilisez float(sum(L))/len(L)
ou from __future__ import division
division par zéro: la liste peut être vide. résoudre:
if not L:
raise WhateverYouWantError("foo")
avg = float(sum(L))/len(L)
from statistics import mean
avarage=mean(your_list)
par exemple
from statistics import mean
my_list=[5,2,3,2]
avarage=mean(my_list)
print(avarage)
et le résultat est
3.0
La bonne réponse à votre question est d'utiliser statistics.mean
. Mais pour le plaisir, voici une version de moyenne qui n’utilise pas la fonction len()
, elle peut donc être utilisée (comme statistics.mean
) sur des générateurs ne prenant pas en charge len()
:
from functools import reduce
from operator import truediv
def ave(seq):
return truediv(*reduce(lambda a, b: (a[0] + b[1], b[0]),
enumerate(seq, start=1),
(0, 0)))