我有一个numpy数组,我将在其中计算一些数字之间的LN差,然后将其求平均值。问题在于,使用负输入将无法定义LN函数,并且还会发生被零除的情况。我想跳过这些垃圾元素,甚至不想将它们包括在数组中。我想要的是仅遍历可以计算的方程式并取其平均值。
我试图用numpy.nan来做到这一点,这似乎是处理它的最有效方法,只是对每个无法计算的索引值都放一个numpy.nan。更简单地说,我从一开始就将数组初始化为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
,因为从第8个元素转到第一个元素,我将始终具有nan
值填充数组,加上if测试导致的其他nan
。
是否有一种方法可以通过排除nan
来计算此数组的平均值,或者以一种更有效的方式一起使用呢?
答案 0 :(得分:1)
numpy.nanmean
正是这样做的。您可以指定轴,也可以将其保留为None以表示整个ndarray的均值。 Here's a link to the docs.