Znowu gram w Pythonie i znalazłem zgrabną książkę z przykładami. Jednym z przykładów jest wykreślenie niektórych danych. Mam plik .txt z dwiema kolumnami i mam dane. I wykreślić dane w porządku, ale w wykonywaniu mówi: Modyfikacja programu dodatkowo obliczyć i wykreślić z systemem średnio danych, określonych przez:Znaleźć średnią kroczącą z punktów danych w Pythonie
$Y_k=\frac{1}{2r}\sum_{m=-r}^r y_{k+m}$
gdzie r=5
w tym przypadku (i y_k
jest druga kolumna w pliku danych). Niech program wypisze zarówno oryginalne dane, jak i średnią bieżącą na tym samym wykresie.
Do tej pory mam to:
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()
Więc jak mam obliczyć sumę? W Mathematica jest to proste, ponieważ jest to symboliczna manipulacja (na przykład Sum [i, {i, 0, 10}), ale jak obliczyć sumę w pythonie, która pobiera co dziesięć punktów w danych i uśrednia ją, i robi to do końca punktów?
spojrzałem na książki, ale nic nie znalazł, który by to wyjaśnić: \
heltonbiker kodzie wystarczyły ^^: 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()
I mam to:
Dziękuję bardzo ^^ :)
To dziwne. Ponieważ nie mamy twojego pliku txt, nie można go tutaj przetestować, ale myślę, że nie należy używać linii 'xlim' (na wszelki wypadek). – heltonbiker
Dostałem punkty stąd: http: // www-personal. umich.edu/~mejn/computational-physics/sunspots.dat Usunięcie xlim nie pomogło: \ –
Popełniłem błąd w kodzie! musisz wykonać średnią z tablicy y, a nie x: 'y_av = movingaverage (y, r)' 'plot (x, y_av)'. I możesz użyć Xlim ponownie, jak sądzę. – heltonbiker