2017-09-07 10 views
0

私は配列がありますが、これは小さなサンプルです。これは、測定を5回繰り返し、私は5行の各ブロックは、現在5つの最初の行の平均値、中央値と標準偏差を与える一つの行で新しい配列へ5のこれらのブロックを照合したいnumpy内の5行のブロックを繰り返して計算を繰り返す

data = 
[[1, 9, 66, 74, -0.274035] 
[1, 9, 66, 74, -0.269245] 
[1, 9, 66, 74, -0.271161] 
[1, 9, 66, 74, -0.269245] 
[1, 9, 66, 74, -0.266370] 
[2, 10, 65, 73, 0.085277] 
[2, 10, 65, 73, 0.086235] 
[2, 10, 65, 73, 0.090068] 
[2, 10, 65, 73, 0.087193] 
[2, 10, 65, 73, 0.085277] 

何最初の4列のブロックの値の値を保持し、次の列の平均、中央値、標準偏差を求め、5行のブロックにわたって反復して処理します。

data2 = 
[[1, 9, 66, 74, mean[0:5,4], median[0:5,4], std[0:5,4]] 
[2, 10, 65, 73, mean[5:10,4], median[5:10,4], std[5:10,4]]] 

や数値的に:

[[1, 9, 66, 74, -0.270011, -0.269245, 0.002528] 
[2, 10, 65, 73, 0.08681, 0.086235, 0.001777]] 

私はこれを試してみましたが、ちょうど取得しましたが、出力としてゼロです:

index.shape 
Out[119]: (10,) 

repeat = 5 
a = 0 
b = repeat 
length = int((len(index) - repeat)/repeat) 
meanVre = np.zeros(length) 
for _ in range(length): 
    np.append(meanVre, np.mean(data[a:b,5])) 
    a = a+5 
    b = b+5 

(リピートを変数としてではなく、使用されていますブロック内の行の量が後日変更される可能性があるため、図5を参照)。

本当にありがとうございます。

+0

したがって、測定ごとに正確に同じ数のエントリがありますか? – Divakar

+0

はい、そうです、それぞれの測定値は同じですが、このファイルの番号は5です。将来のファイルは異なるかもしれませんが、このファイルはすべて5つです – georussell

答えて

2
def block_stats(data, blocksize = 5): 
    inputs = data[::blocksize, :4] 
    data_stat = data[:, 4].reshape(-1, blocksize) 
    means = np.mean(data_stat, axis = 1, keepdims = 1) 
    medians = np.median(data_stat, axis = 1, keepdims = 1) 
    stds = np.std(data_stat, axis = 1, keepdims = 1) 
    return np.vstack([inputs, means, medians, stds]) 
+0

これは何らかの変更 – georussell