Wednesday, January 25, 2017

Moving Average In Python

Lets sagen, ich habe eine Liste: Ich möchte eine Funktion, die die bewegte n-Tage-Durchschnitt berechnet zu erstellen. Also, wenn n 5 war, würde ich wollen, dass mein Code die ersten 1-5 zu berechnen, fügen Sie es und finden Sie den Durchschnitt, was wäre 3.0, dann auf 2-6 gehen, berechnen Sie den Durchschnitt, die 4,0 werden würde, dann 3 -7, 4-8, 5-9, 6-10. Ich möchte nicht die ersten n-1 Tage zu berechnen, so ab dem n-Tag, es zählen die letzten Tage. Dies scheint zu drucken, was ich will: Aber ich weiß nicht, wie die Zahlen in diesen Listen zu berechnen. Irgendwelche Ideen gefragt Martijns Antwort auf diesem, wie george, Ich frage mich, ob dies nicht schneller wäre, indem eine laufende Summierung anstelle der Anwendung der Summe () immer und immer wieder auf die meisten die gleichen Zahlen . Auch die Idee, während der Hochlaufphase keine Werte als Vorgabe zu haben, ist interessant. In der Tat kann es viele verschiedene Szenarien, die man für bewegte Durchschnitte konzipieren kann. Wir können die Berechnung der Mittelwerte in drei Phasen aufteilen: Ramp Up: Starten von Iterationen, bei denen die aktuelle Iteration lt-Fenstergröße anzeigt Steady Progress: Wir haben genau die Fenstergröße Anzahl der verfügbaren Elemente, um einen normalen Durchschnitt zu berechnen: sum (xiterationcounter-windowsize: iterationcounter) windowsize Ramp Down: Am Ende der Eingabedaten könnten wir wieder eine andere Fenstergröße - 1 durchschnittliche Anzahl - zurückgeben. Heres eine Funktion, die Arbitrary iterables akzeptiert (Generatoren sind fein) als Eingabe für Daten Beliebige Fenstergrößen 1 Parameter zum Einschalten der Produktion von Werten während der Phasen für Ramp UpDown Callback-Funktionen für jene Phasen, um zu steuern, wie Werte erzeugt werden. Dies kann verwendet werden, um ständig eine Vorgabe (z. B. keine) vorzusehen oder Teildurchschnitte bereitzustellen. Es scheint ein bisschen schneller als Martijns-Version zu sein, was jedoch viel eleganter ist. Heres der Test-Code: Die ursprüngliche Frage kann nun mit dieser Funktion Aufruf gelöst werden: beantwortet Feb 18 13 at 18:15 Verwenden Sie die Summe und Karte Funktionen. Die Map-Funktion in Python 3 ist im Grunde eine faulen Version von diesem: Im sicher können Sie erraten, was die Summe-Funktion. Antwort # 2 am: April 23, 2011, 04:37:25 pm »Ein Ansatz, der vermeidet Zwischensummen Zwischensummen .. make, die läuft (int (v)). dann. (5) Wenn Sie Ameisen tragen um Zahlen ein Strings .. Alt ohne die globale: sicher sein, schwimmende Mathematik zu tun, auch wenn Sie Werte eingegeben werden ganze Zahlen beantwortet Summenalgorithmus schneller ist. Ich habe eine Antwort, die Ihren Standpunkt. Es gibt einfach keine Notwendigkeit für eine globale Variable hier. Ich habe versucht zu schwer zu aviod eine explizite for-Schleife. Ndash agentp Es gibt eine andere Lösung, die ein itertools Rezept paarweise () erweitert. Sie können dies auf nwise () erweitern. Die Ihnen das Schiebefenster (und arbeitet, wenn das iterable ist ein Generator): Während eine relativ hohe Setup-Kosten für kurze iterable s diese Kosten verringert in Auswirkungen, je länger der Datensatz. Dies nutzt sum () aber der Code ist einigermaßen elegant: beantwortet 26. November um 14: 59Die folgenden Beispiele produziert einen gleitenden Durchschnitt der vorhergehenden WINDOW-Werte. Wir schneiden die ersten (WINDOW -1) Werte ab, da wir den Durchschnitt vor ihnen finden können. (Das Standardverhalten für die Konvolution besteht darin, dass Werte vor dem Beginn unserer Sequenz 0 sind). (Formalerweise konstruieren wir die Folge y für die Folge x mit yi (xi x (i1) 8230. x (in)) n) Dies nutzt die numpy8217s-Faltungsfunktion. Dies ist ein gleitender Durchschnittsbetrieb. Ändern von Gewichtungen macht einige Werte wichtiger Offsetting entsprechend können Sie die durchschnittliche als um Punkt zu sehen, anstatt vor Punkt. Anstatt die Werte zu verkürzen, können wir die Anfangswerte festlegen, wie in diesem Beispiel veranschaulicht: Wir haben vorgestellt, wie man mit python Bewegungsdurchschnitte erstellt. Dieses Tutorial wird eine Fortsetzung dieses Themas sein. Ein gleitender Durchschnitt im Rahmen der Statistik, auch rollingrunning average genannt, ist eine Art von endlicher Impulsantwort. In unserem vorangegangenen Tutorial haben wir die Werte der Arrays x und y: Let8217s plot x gegen den gleitenden Durchschnitt von y aufgetragen, den wir yMA nennen wollen: Erstens haben let8217s die Länge beider Arrays gleich: Und dies im Kontext: Das Ergebnis Diagramm: Um dies zu verstehen, let8217s plotten zwei verschiedene Beziehungen: x vs y und x vs MAy: Der gleitende Durchschnitt hier ist die grüne Handlung, die bei 3 beginnt: Share this: Gefällt mir: Post navigation Lassen Sie eine Antwort Antworten abbrechen Sehr nützlich I Möchte den letzten Teil auf großen Datensätzen zu lesen hoffen, es wird bald kommen8230 d Blogger wie folgt:


No comments:

Post a Comment