计算不可计算元素的numpy数组平均值的最佳方法

问题描述 投票:0回答:1

我有一个numpy数组,我将计算一些数字之间的LN差异然后我想得到它的平均值。问题是LN功能在负输入时是不可确定的,并且也可能发生除零。我想跳过这些垃圾元素,我甚至不想将它们包含在数组中。我想要的只是通过可以计算的方程并取其平均值。

我试图用numpy.nan做这个,这似乎是处理它的最有效的方法,只是为每个无法计算的索引值放置一个numpy.nan。更简单地说,我只是将数组从get开始初始化为nan,然后只填充可计算元素,并且默认情况下将其他所有内容保留为nan。

像这样:

LN_ARRAY    = numpy.full(array_size, numpy.nan, dtype=float, order='C')

...

    for i in range(7,array_size):

       if(F>0.0): LN_ARRAY[i]=abs(  math.log( A / F )  )
       # make sure F can't be zero or negative, A is by default always non zero positive

现在的问题是,如果我只用numpy.average(LN_ARRAY)取平均值,它将输出nan,因为我将始终有nan值,因为我从第8个元素填充数组,加上额外的nan由于if测试。

有没有办法通过排除nan来计算这个数组的平均值,或者以更有效的方式完成它?

python numpy error-handling nan divide-by-zero
1个回答
1
投票

numpy.nanmean完全这样做。您可以指定轴,或将其保留为无,以获得整个ndarray的平均值。 Here's a link to the docs.

© www.soinside.com 2019 - 2024. All rights reserved.