Novamente, para y2 eu entendo que eles são [matriz [número, número], matriz [número, número] ...]: \ Eu preciso obter números para traçar: \ Encontrando média móvel de pontos de dados em Python

Eu estou tocando Python novamente, e encontrei um livro com exemplos. Um dos exemplos é plotar alguns dados. Eu tenho um arquivo .txt com duas colunas e eu tenho os dados. Eu plotei os dados muito bem, mas no exercício diz: Modifique seu programa ainda mais para calcular e traçar a média de execução dos dados, definida por:

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

Onder=5 neste caso (ey_k é a segunda coluna no arquivo de dados). Faça o programa traçar os dados originais e a média de execução no mesmo gráfico.

Até agora eu tenho isso:

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

Então, como faço para calcular a soma? No Mathematica é simples, uma vez que é manipulação simbólica (Sum [i, {i, 0,10}], por exemplo), mas como calcular soma em python que leva a cada dez pontos nos dados e calcula a média, e faz isso até o final de pontos?

Eu olhei para o livro, mas não encontrei nada que explicasse isso:

O código do heltonbiker fez o truque ^^: 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()

E eu tenho isso:

Muito obrigado ^^ :)

questionAnswers(7)

yourAnswerToTheQuestion