【问题标题】:Python Get minimum value without -infPython在没有-inf的情况下获取最小值
【发布时间】:2016-12-11 17:17:59
【问题描述】:

我试图找到没有 -inf 值的数组的最小值。我能找到的有 numpy 函数可以过滤掉 NaN 但不是 -inf:

import numpy as np
np.nanmin([1, 2, np.nan, np.NINF])

想要的输出是:

1

【问题讨论】:

    标签: python python-2.7 numpy


    【解决方案1】:

    选择非-Infs 并得到min 忽略NaNsnp.nanmin -

    np.nanmin(a[a != -np.inf])
    

    示例运行 -

    In [209]: a
    Out[209]: array([  1.,   2.,  nan, -inf])
    
    In [210]: np.nanmin(a[a != -np.inf])
    Out[210]: 1.0
    

    【讨论】:

      【解决方案2】:

      使用np.isfinite 仅获取真实值:

      import numpy as np
      a = np.array([1, 2, np.nan, np.NINF])
      min_value = a[np.isfinite(a)].min()
      # >>> 1.0
      

      【讨论】:

      • 很好,这也有效!如果数组只有 Infs 和 -Infs 可能会导致麻烦。
      • 可能有充分的理由造成麻烦。在这种情况下,您期望哪个值?
      • 如果没有 -Infs 和 NaN,我们将剩下 Infs,所以我认为在这种情况下我们会期望 Inf 作为结果。
      【解决方案3】:

      另一种使用掩码数组的方法:

      >>> import numpy as np
      >>> np.ma.masked_invalid([1, 2, np.nan, np.NINF]).min()
      1.0
      

      masked_invalid 将忽略 Inf 和 NaN 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-18
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2011-01-14
        • 2011-11-20
        相关资源
        最近更新 更多