Python Numpy:广播+;布尔索引

Python Numpy:广播+;布尔索引,python,numpy,array-broadcasting,Python,Numpy,Array Broadcasting,我有以下numpy数组 A: shape (n1, n2) array of float B: shape (n2,) array of float M: shape (n1, n2) array of bool 如何将以下psedoo代码转换为高效的实数代码?阵列可能很大,可能超过1亿个元素 A[M] = ("B broadcast to shape (n1,n2)")[M] 广播既简单又节省内存: A, B, M = np.broadcast_arrays(A, B, M) 但是,在代

我有以下numpy数组

A: shape (n1, n2) array of float
B: shape (n2,) array of float
M: shape (n1, n2) array of bool
如何将以下psedoo代码转换为高效的实数代码?阵列可能很大,可能超过1亿个元素

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

广播既简单又节省内存:

A, B, M = np.broadcast_arrays(A, B, M)
但是,在代码中使用此
B
将不会提高内存效率,因为
B[M]
的实元素数量与
M
True
值数量相同

而是使用:

np.putmask(A, M, B)
由于使用
putmask
功能会自动重复
B
,因此您甚至不必广播它。虽然我想这样做不会有什么坏处