1. ホーム
  2. python

numpyでboolean配列をindex配列にする方法

2023-07-26 09:27:58

質問

ブール値のマスク配列とは対照的に、条件が真であることに基づく配列内のロケーションの整数インデックスを取得する効率的なNumpyのメカニズムはありますか?

例えば

x=np.array([range(100,1,-1)])
#generate a mask to find all values that are a power of 2
mask=x&(x-1)==0
#This will tell me those values
print x[mask]

この場合、インデックスを知るために imask ここで mask[i]==True . これらをループさせずに生成することは可能でしょうか?

どのように解決するのですか?

もう一つの方法です。

In [13]: numpy.where(mask)
Out[13]: (array([36, 68, 84, 92, 96, 98]),)

と同じものであり numpy.where(mask==True) .