Python在没有-inf的情况下获得最小值

bri*_*ium 3 python numpy python-2.7

我试图找到没有-inf值的数组的最小值.我能找到的是numpy函数来过滤掉NaN而不是-inf:

import numpy as np
np.nanmin([1, 2, np.nan, np.NINF])
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

1
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 10

使用np.isfinite得到的只有真正的价值:

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

  • 很好,这也可以!如果数组仅包含Infs和-Infs,则在非常极端的情况下可能会引起麻烦。 (2认同)

Div*_*kar 6

选择非-Infs并使用- min忽略-NaNsnp.nanmin

np.nanmin(a[a != -np.inf])
Run Code Online (Sandbox Code Playgroud)

样品运行 -

In [209]: a
Out[209]: array([  1.,   2.,  nan, -inf])

In [210]: np.nanmin(a[a != -np.inf])
Out[210]: 1.0
Run Code Online (Sandbox Code Playgroud)


Ima*_*ngo 5

使用掩码数组的替代方法:

>>> import numpy as np
>>> np.ma.masked_invalid([1, 2, np.nan, np.NINF]).min()
1.0
Run Code Online (Sandbox Code Playgroud)

masked_invalid将忽略 Inf 和 NaN 值。