私は再び Python で遊んでいますが、例が載った素敵な本を見つけました。例の 1 つは、いくつかのデータをプロットすることです。2 つの列を持つ .txt ファイルがあり、データがあります。私はデータをうまくプロットしましたが、演習では次のように書かれています:
$Y_k=\frac{1}{2r}\sum_{m=-r}^r y_{k+m}$
r=5
この場合 (データy_k
ファイルの 2 番目の列)。元のデータと移動平均の両方を同じグラフにプロットするプログラムを作成します。
これまでのところ、私はこれを持っています:
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()
では、合計はどのように計算すればよいのでしょうか。Mathematica では、シンボリック操作 (Sum[i, {i,0,10}] など) であるため簡単ですが、Python で合計を計算する方法は、データ内の 10 ポイントごとに取得して平均し、最後まで行います。ポイントの?
私はその本を見ましたが、これを説明するものは何も見つかりませんでした:\
heltonbiker のコードはうまくいきました ^^ :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()
そして、私はこれを得ました:
ありがとうございます^^:)