我有以下numpy数组
A: shape (n1, n2) array of float
B: shape (n2,) array of float
M: shape (n1, n2) array of bool
如何打开以下pseduo-code inte 高效实际代码?阵列可能很大,可能> 1亿元素。
A[M] = ("B broadcast to shape (n1,n2)")[M]
答案 0 :(得分:2)
广播简单且内存效率高:
A, B, M = np.broadcast_arrays(A, B, M)
但是,在您的代码B
中使用此A[M] = B[M]
将无法提高内存效率,因为B[M]
具有与M
具有True
值一样多的真实元素。< / p>
改为使用:
np.putmask(A, M, B)
由于使用B
功能会自动重复putmask
,因此您甚至不必广播它。虽然我想这样做不会有什么坏处。