2017-09-07 39 views
0

我有一個數組,其中這是一個小樣本。它重複測量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列的塊中保留值的值,然後找到下一列的平均值,中值和標準偏差,迭代地在五行塊上進行操作。

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個。未來的文件可能不同,但這個文件全部是五個 – 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