2016-08-25 3 views
1

だから私は、数値でnumpyの配列を持って正確かつNaNのように浮かぶ。しかしなぜ私はリストの理解から真理値をチェックしてインデックスを返しますか?

nan_idx = [idx for idx, tf in enumerate(myarray) if not bool(tf)] 

In [1]: type(myarray) 
Out[1]: numpy.ndarray 

今、私はこの配列内のNaNが存在する場合、私がしようとして確認したいですこれは、空のリストを返しますが、私がしようとすると:

np.where(pd.isnull(mayarray))[0] 

私は出力として、それぞれのNaN

のインデックスを得ますか

最初の試行では何の結果も得られないのはなぜですか?

答えて

3

あなたの最初のスニペットが動作しない理由はbool(float)はNaNをチェックしませんということです。

>>> float('NaN') 
nan 
>>> bool(float('NaN')) 
True 
>>> not bool(float('NaN')) 
False 

NaNをチェックするには、あなたがnumpy.isnanまたはNaNに等しい比較しないという事実を使用することができますそれ自体:

>>> numpy.isnan(float('NaN')) 
True 
>>> float('NaN') != float('NaN') 
True 
関連する問題