-infの値を指定しないで配列の最小値を探しようとしています。Python -infを付けないで最小値を取得
import numpy as np
np.nanmin([1, 2, np.nan, np.NINF])
所望の出力は次のとおりです:私は何を見つけることができることはNaNを除外するが、-Infないためにnumpyの機能があり
1
-infの値を指定しないで配列の最小値を探しようとしています。Python -infを付けないで最小値を取得
import numpy as np
np.nanmin([1, 2, np.nan, np.NINF])
所望の出力は次のとおりです:私は何を見つけることができることはNaNを除外するが、-Infないためにnumpyの機能があり
1
が非-Infsを選択し、np.nanmin
とNaNs
を無視してmin
を得ます - サンプル実行
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
使用np.isfinite
実数値のみを取得します
import numpy as np
a = np.array([1, 2, np.nan, np.NINF])
min_value = a[np.isfinite(a)].min()
# >>> 1.0
は、マスクされた配列使用して別のアプローチ:
>>> import numpy as np
>>> np.ma.masked_invalid([1, 2, np.nan, np.NINF]).min()
1.0
masked_invalidはInfのとNaNの値を無視します。
ニース、これも機能します!配列にInfsと-Infsだけがある場合、非常にコーナーケースのように、問題が発生する可能性があります。 – Divakar
十分な理由でトラブルが発生する可能性があります。この場合、どんな価値がありますか? – Daniel
-InfsとNaNが指定されていない場合は、Infsが残っているので、その場合Infを結果として期待します。 – Divakar