Numpy:广播+布尔索引

时间:2012-09-03 10:43:29

标签: python numpy numpy-broadcasting

我有以下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]

1 个答案:

答案 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,因此您甚至不必广播它。虽然我想这样做不会有什么坏处。

相关问题