Für y2 erhalte ich wieder, dass es sich um [array [number, number], array [number, number] ...] handelt: \ Ich muss Zahlen zum Zeichnen bekommen: \ Ermitteln des gleitenden Durchschnitts aus Datenpunkten in Python

Ich spiele wieder ein bisschen in Python und habe ein ordentliches Buch mit Beispielen gefunden. Eines der Beispiele ist das Zeichnen einiger Daten. Ich habe eine TXT-Datei mit zwei Spalten und ich habe die Daten. Ich habe die Daten gut gezeichnet, aber in der Übung heißt es: Ändern Sie Ihr Programm weiter, um den laufenden Durchschnitt der Daten zu berechnen und zu zeichnen, definiert durch:

$Y_k=\frac{1}{2r}\sum_{m=-r}^r y_{k+m}$

woherr=5 in diesem Fall (und demy_k ist die zweite Spalte in der Datendatei). Lassen Sie das Programm sowohl die Originaldaten als auch den laufenden Durchschnitt in demselben Diagramm darstellen.

Bisher habe ich das:

from pylab import plot, ylim, xlim, show, xlabel, ylabel
from numpy import linspace, loadtxt

data = loadtxt("sunspots.txt", float)
r=5.0

x = data[:,0]
y = data[:,1]

plot(x,y)
xlim(0,1000)
xlabel("Months since Jan 1749.")
ylabel("No. of Sun spots")
show()

Wie berechne ich die Summe? In Mathematica ist dies einfach, da es sich um eine symbolische Manipulation handelt (z. B. Summe [i, {i, 0,10}]), aber wie wird die Summe in Python berechnet, die alle zehn Punkte in den Daten verwendet und gemittelt wird, und dies bis zum Ende von Punkten?

Ich habe das Buch angeschaut, aber nichts gefunden, was dies erklären könnte: \ heltonbiker's code hat den trick gemacht ^^: D

Und ich habe folgendes verstanden:

from __future__ import division
from pylab import plot, ylim, xlim, show, xlabel, ylabel, grid
from numpy import linspace, loadtxt, ones, convolve
import numpy as numpy

data = loadtxt("sunspots.txt", float)

def movingaverage(interval, window_size):
    window= numpy.ones(int(window_size))/float(window_size)
    return numpy.convolve(interval, window, 'same')

x = data[:,0]
y = data[:,1]


plot(x,y,"k.")
y_av = movingaverage(y, 10)
plot(x, y_av,"r")
xlim(0,1000)
xlabel("Months since Jan 1749.")
ylabel("No. of Sun spots")
grid(True)
show()

Vielen Dank ^^ :)

Das ist komisch. Da wir Ihre txt-Datei nicht haben, ist es nicht möglich, hier zu testen, aber ich denke, die

Antworten auf die Frage(7)

Ihre Antwort auf die Frage