0

我有两个 numpy 数组AB一个布尔值掩码mask(真/假),所有尺寸都相同。我想用对应元素为的元素替换A其中Bmask元素True;其中 mask 的对应元素是False我想保留A. 我怎样才能做到这一点?

例子:

# Input
A = np.arange(9).reshape(3,3)
B = A*10
mask = np.array([[True, True, False], [False, True, False], [False, False, True]])

# Output
desired_output = np.array([[0, 10, 2], [3, 40, 5], [6, 7, 80]])
4

2 回答 2

3

简单地:

In [54]: A[mask]=B[mask]
In [55]: A
Out[55]: 
array([[ 0, 10,  2],
       [ 3, 40,  5],
       [ 6,  7, 80]])

np.putmask(A,mask,B)也有效。

于 2021-04-08T19:57:12.993 回答
0

尝试map

def repl(a,b,m):
    return b if m else a

desired_output = list(map(repl,A,B,mask))
于 2021-04-08T19:57:38.667 回答