2012-09-03 55 views
0

我有以下numpy的阵列NumPy的:广播+布尔索引

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

如何打开以下pseduo码INTE 高效真正的代码?数组可能很大,可能超过1亿个元素。

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

回答

2

广播是简单而有效的记忆:

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

在你的代码A[M] = B[M]但是使用这种B不会是内存使用效率,因为B[M]有多达真实元素M具有True值。

而是使用:

np.putmask(A, M, B) 

由于Bputmask功能自动重复的,你甚至不应该有播放。虽然我认为这样做不会有什么伤害。