numpy配列内の条件を満たす値のみを取得する 質問する

numpy配列内の条件を満たす値のみを取得する 質問する

NumPy 配列から要素だけを取得する (非常に) 高速で効率的な方法があるはずです。あるいは、もっと興味深いことに、配列の一部から要素だけを取得する方法があるはずです。次のような NumPy 配列があるとします。

import numpy as np
a = np.arange(-10,10)

さて、リストがあるとします:

s = [9, 12, 13, 14]

以下から要素を選択できます:

a[s]  #array([-1,  2,  3,  4])

条件を満たすa[s]の要素、つまり正(または負)の要素で構成された(numpy)配列を作成するにはどうすればよいでしょうか?結果は次のようになります。

np.ifcondition(a[s]>0, a[s])  #array([2,  3,  4])

些細なことのように見えますが、シンプルで凝縮された表現を見つけることができませんでした。マスクならできると思いますが、私にはあまり直接的に見えません。しかし、どちらも:

a[a[s]>0]
a[s[a[s]>0]]

実際には良い選択です。

ベストアンサー1

いかがでしょうか:

In [19]: b = a[s]

In [20]: b[b > 0]
Out[20]: array([2, 3, 4])

おすすめ記事