2017-01-10 5 views
1

説明: 0から1までのR = 1000のランダム値をxとして計算して保存します。 moving_window_average(x、n_neighbors)は3aからメモリにプリロードされます。 n_neighbors 1-9の範囲について、xの移動ウィンドウ平均を計算します。店は スムージング値(1-9の近傍値)

Y.

と呼ばれ、リスト内の連続したリストとして、これらの平均値のそれぞれと同様、xは私のソリューション:次のようにmoving_window_average(X、N_NEIGHBORSは)関数がある

R = 1000 
n_neighbors = 9 

x = [random.uniform(0,1) for i in range(R)] 
Y = [moving_window_average(x, n_neighbors) for n_neighbors in range(1,n_neighbors)] 

def moving_window_average(x, n_neighbors=1): 
    n = len(x) 
    width = n_neighbors*2 + 1 
    x = [x[0]]*n_neighbors + x + [x[-1]]*n_neighbors 
    # To complete the function, 
    # return a list of the mean of values from i to i+width for all values i from 0 to n-1. 
    mean_values=[] 
    for i in range(1,n+1): 
     mean_values.append((x[i-1] + x[i] + x[i+1])/width) 
    return (mean_values) 

これは私にエラーをもたらしますYの使用法を再度確認してください。私はいくつかの値をテストしましたが、私はまだこの演習で問題があるのはなぜですか?私は何かを誤解しただけですか?

答えて

1

命令はそう下記のコードは動作するはずです1から9までのすべてのネイバーのための移動平均を計算することを示しています:

import random 

random.seed(1) 

R = 1000 
x = [] 
for i in range(R): 
    num = random.uniform(0,1) 
    x.append(num) 

Y = [] 

Y.append(x) 

for i in range(1,10): 
    mov_avg = moving_window_average(x, n_neighbors=i) 
    Y.append(mov_avg) 
0

が実際にあなたのmoving_window_average(list, n_neighbors)関数が1よりも大きいN_NEIGHBORSで仕事に行くされていません私は、通訳者は何も言わないが、あなたが求められていることを正確に伝えていないことを意味する。 次のようなものを使用することをおすすめします:

def moving_window_average(x, n_neighbors=1): 
    n = len(x) 
    width = n_neighbors*2 + 1 
    x = [x[0]]*n_neighbors + x + [x[-1]]*n_neighbors 

    mean_values = [] 
    for i in range(n): 
     temp = x[i: i+width] 
     sum_= 0 
     for elm in temp: 
      sum_+= elm 
     mean_values.append(sum_/width) 

    return mean_values