Există un built-in sau biblioteca standard metodă în Python pentru a calcula media aritmetică (un tip de mediu) a unei liste de numere?
Eu nu sunt conștienți de nimic în biblioteca standard. Cu toate acestea, ai putea folosi ceva de genul:
def mean(numbers):
return float(sum(numbers)) / max(len(numbers), 1)
>>> mean([1,2,3,4])
2.5
>>> mean([])
0.0
În numpy, acolo's numpy.adică()
.
Folosi statistici.spun
:
import statistics
print(statistics.mean([1,2,4])) # 2.3333333333333335
L's disponibil din Python 3.4. Pentru 3.1-3.3 utilizatori, o veche versiune a modulului este disponibil pe PyPI sub numele de stats
. Doar schimba "statistici" pentru a statistici
.
Utilizarea scipy:
import scipy;
a=[1,2,4];
print(scipy.mean(a));
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)
Răspunsul la întrebarea ta este de a utiliza statistici.spun. Dar pentru distracție, aici este o versiune a înseamnă că nu utilizează
len () funcția, astfel încât acesta (cum ar fi statistica.spun) poate fi folosit pe generatoare, care nu suport
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)))
Eu am presupus întotdeauna med
este omis din builtins/stdlib pentru că este la fel de simplu ca
sum(L)/len(L) # L is some list
și orice limitări ar fi abordate în codul apelant pentru utilizare locală deja.
Importante limitări:
non-float rezultat: în python2, 9/4 este de 2. pentru a rezolva, folosesc float(sum(L))/len(L) " sau " de la viitoarele import divizia`
împărțirea prin zero: lista poate fi gol. pentru a rezolva:
dacă nu L: ridica WhateverYouWantError("foo") avg = float(sum(L))/len(L)
Alții deja postat răspunsuri foarte bune, dar unii oameni ar putea fi încă în căutarea pentru un mod clasic de a găsi Medie(avg), deci aici voi posta acest (cod testate în 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