Python: die Varianz einer Liste von definierten Nummern
Ich versuche, eine Funktion, druckt die Varianz einer Liste von definierten Nummern:
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
So weit, ich habe versucht, Verfahren zur Herstellung dieser drei Funktionen:
def grades_sum(my_list):
total = 0
for grade in my_list:
total += grade
return total
def grades_average(my_list):
sum_of_grades = grades_sum(my_list)
average = sum_of_grades / len(my_list)
return average
def grades_variance(my_list, average):
variance = 0
for i in my_list:
variance += (average - my_list[i]) ** 2
return variance / len(my_list)
Wenn ich versuche den code auszuführen, aber es gibt mir die folgende Fehlermeldung in der folgenden Zeile:
Line: variance += (average - my_list[i]) ** 2
Error: list index out of range
Entschuldige mich, wenn meine aktuelle Python-Kenntnisse sind begrenzt, aber ich Lerne immer noch - also bitte, wenn Sie möchten Hilfe bei der Lösung dieses Problems versuchen Sie, nicht zu empfehlen, sehr komplizierte Wege auf, wie dieses Problem zu lösen, ich danke Ihnen wirklich sehr.
Nur als Anmerkung,
Das ist richtig.
sum()
ist eine eingebaute Funktion, die bereits vorhanden - keine Notwendigkeit, das Rad neu zu erfinden. sum(grades)
tun.Das ist richtig.
InformationsquelleAutor GiamPy | 2013-05-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als erstes würde ich empfehlen die Verwendung von Python ' s built-in
sum
Methode zu ersetzen, die Ihre erste eigene Methode.grades_average
wird dann:Zweiten würde ich dringend empfehlen, sich in die NumPy-Bibliothek, als es diese Methoden integriert.
numpy.mean()
undnumpy.std()
würde für diese beiden Fälle.Wenn Sie interessiert sind, schreiben Sie den code für sich selbst zuerst, das ist völlig in Ordnung. Für Ihre speziellen Fehler, ich glaube @gnibbler oben genagelt. Wenn Sie möchten, um eine Schleife über einen index können Sie die Umstrukturierung der Linie in
grades_variance
werden:Als Lattyware darauf hingewiesen, Loop-Funktion, die durch den index ist nicht besonders "Pythonic"; die Art, wie Sie derzeit tun, ist es in der Regel überlegen. Dies ist nur für Ihre Referenz.
Vereinbart, aber es ist nützlich zu wissen, wie zu tun ist.
Was meinst du mit "so bin ich derzeit dabei ist es grundsätzlich überlegen"?
Ihre aktuelle loop-Konstruktion macht
i
das Element in der Liste. Ich gab die loop-Struktur für die Herstellungi
eine Ganzzahl index in die Liste ein. Der ehemalige (wie du es in deiner ursprünglichen Frage) ist in der Regel besser.Als der Python 3.4, gibt es
mean()
undvariance()
Funktionen in derstatistics
- Modul. Keine Notwendigkeit zu laden, NumPy nur zum berechnen einer Varianz mehr.InformationsquelleAutor Magsol
Versuchen numpy.
InformationsquelleAutor robinfang
Wenn Sie sagen,
i
ist nicht die index der Sache.i
ist das ElementInformationsquelleAutor John La Rooy
Während gnibbler hat das problem mit Ihrem code, dies können Sie erreichen, viel leichter mit built-in-Funktionen und ein generator-Ausdruck:
Es Aussehen könnte, ein wenig beängstigend auf den ersten, aber wenn du dir das video habe ich den link über die Liste Verstehens-und generator-Ausdrücke - Sie sind wirklich einfach und nützlich.
InformationsquelleAutor Gareth Latty
python 3.4 hat ein Statistik-lib, die dies tut.
https://docs.python.org/3/library/statistics.html#statistics.pvariance
statistics
port für python 2.7Heute ist dein Glückstag pypi.python.org/pypi/statistics
Wow, herzlichen Glückwunsch!! ;D Wirklich vielen Dank, das wird hilfreich sein!
InformationsquelleAutor zengr
Ich nehme an, Sie möchten die stichprobenvarianz, d.h. der unverzerrte Schätzer der Varianz. Ich denke diese Funktion könnte den job machen. Es wird gedruckt, die Varianz und den Mittelwert eines Vektors n.
InformationsquelleAutor Don Juan
der folgende code wird verwendet, um den Durchschnitt der Werte
Varianz-Formel -> Der Durchschnitt der quadrierten Differenzen vom Mittelwert.
Dieser folgende code wird verwendet, um die Varianz der Werte
InformationsquelleAutor Bharatwaja