2016-12-11 2 views
1

-infの値を指定しないで配列の最小値を探しようとしています。Python -infを付けないで最小値を取得

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

所望の出力は次のとおりです:私は何を見つけることができることはNaNを除外するが、-Infないためにnumpyの機能があり

1 

答えて

3

が非-Infsを選択し、np.nanminNaNsを無視して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 
7

使用np.isfinite実数値のみを取得します

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

ニース、これも機能します!配列にInfsと-Infsだけがある場合、非常にコーナーケースのように、問題が発生する可能性があります。 – Divakar

+0

十分な理由でトラブルが発生する可能性があります。この場合、どんな価値がありますか? – Daniel

+0

-InfsとNaNが指定されていない場合は、Infsが残っているので、その場合Infを結果として期待します。 – Divakar

3

は、マスクされた配列使用して別のアプローチ:

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

masked_invalidはInfのとNaNの値を無視します。

関連する問題