2016-12-04 13 views
1

Pythonで関数の二乗平均平方根を計算したいと思います。私の関数は、y = f(x)のような単純な形式です。 xとyは配列です。Pythonでの関数の二乗平均平方根

私はNumpy and Scipy Docsを試しましたが、何も見つかりませんでした。

+0

計算しようとしている関数は何ですか? yのルート二乗平均値? – Praveen

+0

サンプル配列と期待されるソリューションを追加できれば助けになるでしょう... – Praveen

答えて

3

私はあなたの次の擬似コードによって与えられた式を計算したいと仮定するつもりです:

ms = 0 
for i = 1 ... N 
    ms = ms + y[i]^2 
ms = ms/N 
rms = sqrt(ms) 

すなわちyの要素の二乗値の平均値の平方根。 numpyので

次のように、あなたは単にy広場、そのmeanとそのsquare rootを取ることができます:

rms = np.sqrt(np.mean(y**2)) 

をので、例えば:あなたがすることを意味場合

>>> y = np.array([0, 0, 1, 1, 0, 1, 0, 1, 1, 1]) # Six 1's 
>>> y.size 
10 
>>> np.mean(y**2) 
0.59999999999999998 
>>> np.sqrt(np.mean(y**2)) 
0.7745966692414834 

は、あなたの質問に明確でください何か他に尋ねる。

+0

ありがとうございました。私はまだ何か不思議です。 Wikipediaの定義部分によれば、RMSは実際には限界です。私はそれが続けていることを意味します。しかし、あなたの答えでは、第1度だけが考慮されました。何とか計算中に残りを無視していると思いますか? あなたの答えが機能します。しかし、私はこれを尋ねて、全体の主題を明らかにする。 –

+0

@通常、正弦波のRMS値を計算しようとしている場合(つまり、f(x)が正弦関数)、またはそのようなものがある場合は、_integration_を実行する必要があります。これはここでの合計として概算されます。あなたがあなたの合計のために極小間隔を取る必要があるので、制限が入ります。言い換えれば、 'x'でより細かい解像度を使用すると、RMS値をより正確に見積もることができます。 – Praveen

+0

警告:numpyでは、数値が型(Pythonのdtype)に比べて大きすぎると、power関数が負の値を返すことがあります。これを避けるために、値をキャストすると便利なことがあります。例:>> np.sqrt(np.mean(y.astype(np.dtype(np.int64))** 2))。コードではあまりいいことではありませんが、それは仕事をするでしょう! – PatriceG