【发布时间】:2023-03-13 11:30:01
【问题描述】:
我有一个 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,因为我总是有nan 值,因为我从第8 个元素开始填充数组,加上由于 if 测试,额外的 nan。
有没有办法通过排除nan 来计算这个数组的平均值,或者以更有效的方式一起计算?
【问题讨论】:
标签: python numpy error-handling nan divide-by-zero