Python Numpy:广播+;布尔索引
我有以下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) 但是,在代
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
,因此您甚至不必广播它。虽然我想这样做不会有什么坏处