4

特定のリストの整数が配列に現れるたびに真の値を持つ配列のブールインデックスを作成したいと思います。現在、テスト整数のリストをループし、それぞれに対して個別のブール値マスクを作成して、次のorようにビットごとにまとめることでこれを行います。

boolean_mask = original_array == list_of_codes[0]
for code in list_of_codes[1::]:
    boolean_mask = boolean_mask | (original_array == code)

ループなしで同等のことを行う簡単な numpy 表記法​​はありますか?

4

2 に答える 2

5

あなたが持っているnp.in1d

boolean_mask = np.in1d(original_array, list_of_codes)

するべきです。np.in1d両方の配列を平坦化することに注意してください。original_array多次元の場合は、元に戻す必要があります。たとえば、次のようになります。

boolean_mask = boolean_mask.reshape(original_array.shape)
于 2013-11-11T07:29:55.603 に答える
0

ブロードキャストでは、次のように書くだけでよいと思います。

boolean_mask = (original_array == list_of_codes)

これが間違っている場合は、小さなテスト例を提供してください。そうすれば、あなたが何をしようとしているのかを確実に知ることができます。

于 2013-11-11T07:18:57.617 に答える