Cálculo de la media aritmética (un tipo de promedio) en Python

¿Existe un método de biblioteca estándar o incorporado en Python para calcular la media aritmética (un tipo de promedio) de una lista de números?

No tengo conocimiento de nada en la biblioteca estándar. Sin embargo, podrías usar algo como:

def mean(numbers): return float(sum(numbers)) / max(len(numbers), 1) >>> mean([1,2,3,4]) 2.5 >>> mean([]) 0.0 

En numpy, hay numpy.mean() .

NumPy tiene un numpy.mean que es una media aritmética. El uso es tan simple como esto:

 >>> import numpy >>> a = [1, 2, 4] >>> numpy.mean(a) 2.3333333333333335 

En Python 3.4, hay un nuevo módulo de statistics . Ahora puedes usar statistics.mean :

 import statistics print(statistics.mean([1,2,4])) # 2.3333333333333335 

Para los usuarios de 3.1-3.3, la versión original del módulo está disponible en PyPI con el nombre de stats . Sólo cambia las statistics a las stats .

Ni siquiera necesitas adormecer o asustar …

 >>> a = [1, 2, 3, 4, 5, 6] >>> print(sum(a) / len(a)) 3 

Utilice scipy:

 import scipy; a=[1,2,4]; print(scipy.mean(a)); 

En lugar de lanzar para flotar puedes hacer lo siguiente.

 def mean(nums): return sum(nums, 0.0) / len(nums) 

o usando lambda

 mean = lambda nums: sum(nums, 0.0) / len(nums) 
 def avg(l): """uses floating-point division.""" return sum(l) / float(len(l)) 

Ejemplos:

 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) 
 from statistics import mean avarage=mean(your_list) 

por ejemplo

 from statistics import mean my_list=[5,2,3,2] avarage=mean(my_list) print(avarage) 

y el resultado es

 3.0 

Siempre supuse que avg se omite en builtins / stdlib porque es tan simple como

 sum(L)/len(L) # L is some list 

y cualquier advertencia se abordará en el código del llamante para uso local ya .

Advertencias notables:

  1. resultado no flotante: en python2, 9/4 es 2. para resolver, use float(sum(L))/len(L) o from __future__ import division

  2. división por cero: la lista puede estar vacía. resolver:

     if not L: raise WhateverYouWantError("foo") avg = float(sum(L))/len(L) 

La respuesta correcta a su pregunta es usar statistics.mean . Pero por diversión, aquí hay una versión de mean que no usa la función len() , por lo que (como statistics.mean ) se puede usar en generadores, que no admiten 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))) 

Otros ya publicaron respuestas muy buenas, pero algunas personas podrían seguir buscando una forma clásica de encontrar Mean (avg), así que aquí publico esto (código probado en Python 3.6):

 def meanmanual(listt): mean = 0 lsum = 0 lenoflist = len(listt) for i in listt: lsum += i mean = lsum / lenoflist return float(mean) a = [1, 2, 3, 4, 5, 6] meanmanual(a) Answer: 3.5