Gibt es in Python eine integrierte oder standardisierte Bibliotheksmethode, um den arithmetischen Mittelwert (eine Art von Durchschnitt) einer Liste von Zahlen zu berechnen?
In der Standardbibliothek ist mir nichts bekannt. Sie könnten jedoch Folgendes verwenden:
def mean(numbers):
return float(sum(numbers)) / max(len(numbers), 1)
>>> mean([1,2,3,4])
2.5
>>> mean([])
0.0
In Nummer gibt es numpy.mean()
.
NumPy hat ein numpy.mean
, welches ein arithmetisches Mittel ist. Die Nutzung ist so einfach wie folgt:
>>> import numpy
>>> a = [1, 2, 4]
>>> numpy.mean(a)
2.3333333333333335
In Python 3.4 gibt es ein neues statistics
Modul. Sie können jetzt statistics.mean
verwenden:
import statistics
print(statistics.mean([1,2,4])) # 2.3333333333333335
Für Benutzer der Version 3.1-3.3 ist die ursprüngliche Version des Moduls unter PyPI unter dem Namen stats
verfügbar. Ändern Sie einfach statistics
in stats
.
Du brauchst noch nicht einmal ein wenig oder scipy ...
>>> a = [1, 2, 3, 4, 5, 6]
>>> print(sum(a) / len(a))
3
Benutze scipy:
import scipy;
a=[1,2,4];
print(scipy.mean(a));
Anstatt zu schweben, können Sie Folgendes tun
def mean(nums):
return sum(nums, 0.0) / len(nums)
oder mit 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)
Ich gehe immer davon aus, dass avg
in der builtins/stdlib weggelassen wird, weil es so einfach ist wie
sum(L)/len(L) # L is some list
und eventuelle Vorbehalte wären bereits im lokalen Code für Anrufer/in adressiert.
Bemerkenswerte Vorbehalte:
nicht-Float-Ergebnis: In Python2 ist 9/4 2. Zum Auflösen verwenden Sie float(sum(L))/len(L)
oder from __future__ import division
division durch Null: Die Liste ist möglicherweise leer. lösen:
if not L:
raise WhateverYouWantError("foo")
avg = float(sum(L))/len(L)
from statistics import mean
avarage=mean(your_list)
zum Beispiel
from statistics import mean
my_list=[5,2,3,2]
avarage=mean(my_list)
print(avarage)
und das Ergebnis ist
3.0
Die richtige Antwort auf Ihre Frage lautet statistics.mean
. Aber zum Spaß ist hier eine Version von mean, die die Funktion len()
nicht verwendet. Daher kann sie (wie statistics.mean
) auf Generatoren verwendet werden, die len()
nicht unterstützen:
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)))