現在、配列内の特定の要素が等しいかどうかをチェックするコードがあります = 0 である場合は、値を「レベル」値に設定します (temp_board は 2D numpy 配列であり、indexs_to_watch にはゼロを監視する必要がある 2D 座標が含まれています)。
indices_to_watch = [(0,1), (1,2)]
for index in indices_to_watch:
if temp_board[index] == 0:
temp_board[index] = level
これをより numpy に似たアプローチ (for を削除して numpy 関数のみを使用) に変換して、これを高速化したいと思います。これが私が試したことです:
masked = np.ma.array(temp_board, mask=(a!=0), hard_mask=True)
masked.put(indices_to_watch, level)
残念ながら、put() を実行するときにマスクされた配列が 1D 次元を持ちたい場合 (まったく奇妙です!)、0 に等しく具体的なインデックスを持つ配列要素を更新する他の方法はありますか?
それとも、マスクされた配列を使用するのは適切ではないでしょうか?