2017-01-08 13 views
1

私はPythonを使用していますが、私はnoobであるので、ベクトルの平均を計算する方法は分かりません。私は、私は100個の要素の平均をしたいと思いますので、だけにして、他の100に渡したいと部分区間Pythonの平均

import numpy as np 

r = np.zeros(10000) # declare my vector 

for i in range(0,2000): # start the loop 
    r[i] = i**2 # some function to compute and save 
    if (i%100 == 0): # each time I save 100 elements I want the mean 
     av_r = np.mean(r) 
     print(av_r) 

私のコードは動作しないで欲しいものではありません、これまで

私の裁判は、平均を計算して進んでください。

私はベクトルの寸法を小さくしている場合にそれをきれいにしてみてください。

import numpy as np 

r = np.zeros(100) # declare my vector 

for i in range(0,2000): # start the loop 
    r[i] = i**2 # some function to compute and save 
    if (i%100 == 0): # each time I save 100 elements I want the mean 
     av_r = np.mean(r) 
     print(av_r) 
     r = np.zeros(100) 

は単純に、私はあなたが平均ベクトルをきれいにし、他の保存計算を続ける計算し、100個の要素を保存することが考え要素は100 + 1から200 + 1までですが、エラーが出ます。特に:

IndexError: index 100 is out of bounds for axis 0 with size 100

あなたの助けに感謝。

+0

あなたは 'r [i%100] = i ** 2'をしたいと思います。しかし、私は "それは私にエラーを与える"ので、あまりにも広すぎると仮定することができます。 stacktraceを投稿してください。 –

答えて

1

あなたのインデックスは0から1999の範囲であり、あなたは100サイズのアレイ上

r[i] = i**2 # some function to compute and save 

をやっているので、あなたはおそらく発生したエラーは、境界(IndexError: index 100 is out of bounds for axis 0 with size 100)のうちの配列です。

修正:

r[i%100] = i**2 # some function to compute and save 
2

は、これはあなたが探しているものですか?このコードは、100の間隔で0から2000まで繰り返され、各間隔にある関数(x -> x**2)をマッピングし、平均を計算して結果を出力します。

import numpy as np 

r = np.zeros(10000) 
for i in range(0, 2000, 100): 
    interval = [x ** 2 for x in r[i:i + 100]] 
    av_r = np.mean(interval) 
    print(av_r) 

この出力は、一連の20 0.0です。

+0

'np.zeros(10000)'はそれほど大したことはありませんか? :) –

+0

@ Jean-FrançoisFabre私はOPの質問からそれをコピーしました。 – Tagc

+0

@ Tagc私は多分あなたの答えを誤解しています。なぜ出力が「0.0」ですか?ある区間に亘るx ** 2の平均は、毎回「0.0」よりも大きく異なるべきである。 –