665 Stimmen

Ermitteln des Durchschnitts einer Liste

Wie finde ich den Mittelwert einer Liste in Python?

[1, 2, 3, 4]    2.5

7voto

U12-Forward Punkte 64772

Oder verwenden Sie pandas 's Series.mean Methode:

pd.Series(sequence).mean()

Demo:

>>> import pandas as pd
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> pd.Series(l).mean()
20.11111111111111
>>> 

Aus den Unterlagen:

Series.mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

Und hier ist die Dokumentation dazu:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html

Und die gesamte Dokumentation:

https://pandas.pydata.org/pandas-docs/stable/10min.html

5voto

Paulo YC Punkte 51

Ich hatte eine ähnliche Frage in einer Udacity-Aufgabe zu lösen. Anstelle einer eingebauten Funktion habe ich codiert:

def list_mean(n):

    summing = float(sum(n))
    count = float(len(n))
    if n == []:
        return False
    return float(summing/count)

Viel länger als üblich, aber für einen Anfänger eine ziemliche Herausforderung.

5voto

AlmoDev Punkte 909

Als Anfänger habe ich das gerade programmiert:

L = [15, 18, 2, 36, 12, 78, 5, 6, 9]

total = 0

def average(numbers):
    total = sum(numbers)
    total = float(total)
    return total / len(numbers)

print average(L)

5voto

jasonleonhard Punkte 8428

Wenn Sie mehr als nur den Mittelwert (aka Durchschnitt) erhalten möchten, könnten Sie sich Scipy Stats ansehen:

from scipy import stats
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print(stats.describe(l))

# DescribeResult(nobs=9, minmax=(2, 78), mean=20.11111111111111, 
# variance=572.3611111111111, skewness=1.7791785448425341, 
# kurtosis=1.9422716419666397)

4voto

Superpaul Punkte 61

Beide können annähernd ähnliche Werte für eine ganze Zahl oder mindestens 10 Dezimalwerte liefern. Wenn Sie aber wirklich lange Gleitkommawerte in Betracht ziehen, können beide unterschiedlich sein. Die Herangehensweise hängt davon ab, was Sie erreichen wollen.

>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> print reduce(lambda x, y: x + y, l) / len(l)
20
>>> sum(l)/len(l)
20

Fließende Werte

>>> print reduce(lambda x, y: x + y, l) / float(len(l))
20.1111111111
>>> print sum(l)/float(len(l))
20.1111111111

@Andrew Clark hatte mit seiner Aussage recht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X