2014-05-14 71 views
0

我通過使用求和含有nan值數組:平均陣列的迭代總和與楠元件

for i in range(whatever): 
    a = *something different at each cycle* 
    b = np.nansum([b, a],axis=0) 

#now calculate the average of b elements avoiding nan counts 

ba是具有相同大小的)。 現在,如您所見,這是迭代的,在最後添加要創建的單個和數組。

最後,我想計算最終的b數組中每個元素的平均值,當然不包括nan元素。

我發現的所有其他討論都只考慮了兩個數組,它們的平均元素是使用nanmean獲得的,但我認爲這是不可能的。

也許,如果nansum不是最好的方法,我也可以改變總結元素的方式,但這是我迄今爲止所做的。

那麼,有沒有一種簡單的方法來獲得不包括從計數nan元素最終平均?

編輯:迭代由若干次,不只是一個,使用a陣列(在本例中)在每個週期中發生變化。這就是爲什麼我不能夠使用相同的解決方案作爲鏈接的問題

+0

在這種情況下,OP不反覆總結數量的軌道。或者,我不知道如何將這兩種情況減少到相同的解決方案。 –

+0

你不能簡單地跟蹤a中NaN的數量,取循環後b的總和除以非NaN元素的總數('len(whatever)* a.size - totalNaNs')? – Evert

回答

0

你可以保持非nan元素自己

n = np.zeros(*shape of a*) 
for i in range(whatever): 
    a = *something different at each cycle* 
    b = np.nansum([b, a],axis=0) 
    n = np.sum([n, np.invert(np.isnan(a))],axis=0) 

avg = b/n 
+0

這不能工作。這將返回一個數字,而我需要每個元素位置的nan的總和數組。 –

+0

你說得對,我誤解了你正在做的事。我已經更新了我的答案,以便做你想做的事。 – user3419537