2017-09-06 79 views
0

私は2つのnumpy配列を持っています。両方のリストにnanエントリを持つすべてのエントリを破棄したいと思います。これはどうすればいいですか? (ナンのみ、最初のリストで発生する可能性があります)np.whereのnp.isnanを否定します。

私は次のことを試してみました:

import numpy as np 
a = np.array([1,2,np.nan,3,4]) 
b = np.array([5,6,7,8,9]) 

私が行う場合:

b[np.where(np.isnan(a))] 

これは私を返します。しかし

np.array([7]) 

、私が望む

np.array([5,6,8,9]) 

np.logical_notと〜を使ってnp.whereを否定するいくつかの方法を試しましたが、これを動作させることはできませんでした。

+1

「np.where」をスキップします。それらと一緒に遊んでください。ありがとうございます。 – Divakar

+0

それはそれを解決する。いつnp.whereが必要ですか? – Lost1

+0

ここにはコメントよりもはるかに優れたカバレッジがあります。 – Divakar

答えて

1

ネガティブが必要です~np.isnanの直前です。

b[~np.isnan(a)] 
# array([5, 6, 8, 9]) 

次の作品、ならびに(:条件が満たされていると、それはインデックスを否定することは容易ではない負の屈折率は、特別な意味Pythonで(配列の端から抽出素子)を有しているのでnp.whereリターンインデックス必要ではありません)。

b[np.where(~np.isnan(a))] 
# array([5, 6, 8, 9]) 
関連する問題