包含nan元素的数组迭代求和的平均值

0 投票
1 回答
832 浏览
提问于 2025-04-18 06:30

我在对包含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数组(在这个例子中),每次循环时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

撰写回答