Nuevamente, para y2 obtengo que son [array [número, número], array [número, número] ...]: \ Necesito obtener números para trazar: \ Encontrar el promedio móvil de los puntos de datos en Python

Estoy jugando en Python un poco de nuevo, y encontré un buen libro con ejemplos. Uno de los ejemplos es trazar algunos datos. Tengo un archivo .txt con dos columnas y tengo los datos. Trazé los datos muy bien, pero en el ejercicio dice: modifique su programa aún más para calcular y trazar el promedio de los datos, definido por:

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

dónder=5 en este caso (y ely_k es la segunda columna en el archivo de datos). Haga que el programa trace los datos originales y el promedio de ejecución en el mismo gráfico.

Hasta ahora tengo esto:

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()

Entonces, ¿cómo calculo la suma? En Mathematica es simple ya que es manipulación simbólica (Suma [i, {i, 0,10}] por ejemplo), pero cómo calcular la suma en python, que toma cada diez puntos en los datos y los promedia, y lo hace hasta el final. de puntos?

Miré el libro, pero no encontré nada que explicara esto:

El código de heltonbiker hizo el truco ^^: D

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()

Y tengo esto:

Muchas gracias ^^ :)

Respuestas a la pregunta(7)

Su respuesta a la pregunta