包含nan元素的数组迭代求和的平均值
我在对包含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
(b
和a
的大小是一样的)。可以看到,这个过程是逐步进行的,把每个元素加起来,最后得到一个总和数组。
最后,我想计算最终b
数组中每个元素的平均值,当然要把nan
元素排除在外。
我找到的其他讨论只考虑了两个数组,它们的元素平均值是通过使用nanmean来获得的,但我觉得在这里不太适用。
如果nansum
不是最好的求和方式,我也可以考虑换一种方法来求和,但到目前为止我一直是这样做的。
所以,有没有简单的方法可以得到最终的平均值,同时排除nan
元素呢?
编辑:这个迭代过程是进行多次的,不止一次,使用的是a
数组(在这个例子中),每次循环时a
的内容都会变化。这就是我无法使用链接问题中相同解决方案的原因。
1 个回答
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