0

私は次のnumpy配列を持っています

A: shape (n1, n2) array of float
B: shape (n2,) array of float
M: shape (n1, n2) array of bool

次の疑似コードを効率的な実際のコードに変換するにはどうすればよいですか?配列は巨大で、おそらく1億を超える要素である可能性があります。

A[M] = ("B broadcast to shape (n1,n2)")[M]
4

1 に答える 1

2

ブロードキャストはシンプルでメモリ効率が良いです。

A, B, M = np.broadcast_arrays(A, B, M)

ただし、これBをコードで使用すると、値と同じ数の実要素があるA[M] = B[M]ため、メモリ効率が悪くなります。B[M]MTrue

代わりに以下を使用してください:

np.putmask(A, M, B)

B関数で自動的に繰り返されるのでputmask、ブロードキャストする必要もありません。私はそれをすることは害を及ぼすことはできないと思いますが。

于 2012-09-03T11:18:15.677 に答える