【问题标题】:Best way to compute average of numpy array excluding uncomputable elements计算 numpy 数组平均值的最佳方法,不包括不可计算的元素
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 嗨,Marcel,请扩展您的答案,链接可能会过期。
    • 似乎工作谢谢,但我会等待其他答案是否有更顺畅的方式来做到这一点。目前这似乎也是最快的方式,但谁知道呢。
    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2021-01-17
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2017-01-02
    相关资源
    最近更新 更多