質問

私はNaNを含んでnumpyの配列の最小値のインデックスを取得したいと私はそれらを無視したい。

>>> a = array([ nan,   2.5,   3.,  nan,   4.,   5.])  
>>> a  
array([ NaN,  2.5,  3. ,  NaN,  4. ,  5. ])  
私はargminを実行する場合は、

は、それが最初のNaN

のインデックスを返します。
>>> a.argmin()  
0  
私はINFファイルとNaNを代用して、argmin

実行します
>>> a[isnan(a)] = Inf  
>>> a  
array([ Inf,  2.5,  3. ,  Inf,  4. ,  5. ])  
>>> a.argmin()  
1  

私のジレンマは、以下の通りです:(NaNをコード内で後で意味しているので)私はargminで終わりだ後の私はむしろ当時のINFにNaNを変更していないと思います。これを行うには良い方法はありますか?

また、元の値のすべての のはNaNをAであれば、結果はどうあるべきかという問題がありますか?私の実装では答えは0です。

役に立ちましたか?

解決

確かに!使用nanargminます:

import numpy as np
a = np.array([ np.nan,   2.5,   3.,  np.nan,   4.,   5.])
print(np.nanargmin(a))
# 1

nansumnanmaxnanargmax、およびnanminもあり、

scipy.statsでは、nanmeannanmedianがあります。

より多くの方法のためには、nansを無視マスクされた配列にチェックしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top