我有一个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
来计算这个数组的平均值,或者以更有效的方式完成它?
numpy.nanmean
完全这样做。您可以指定轴,或将其保留为无,以获得整个ndarray的平均值。 Here's a link to the docs.