根据另一个矩阵的值索引一个矩阵

Index a matrix based on another matrix's values

我有一个矩阵(实际上是一个 3 维数组),我想 "threshold" 基于另一个矩阵(完全二值化)中的值。所以,例如

set.seed(1234)
M <- matrix(1:9, nrow=3, byrow=F)
M
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
set.seed(1234)
N <- matrix(sample(c(0, 0, 1), 9, replace=T), nrow=3)
N
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    1    0
[3,]    0    0    0

我只想保留 M 中与 N 等于 1 相同位置的值;将其余部分变为 0。输出应为:

M.thresh
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    5    0
[3,]    0    0    0

只需替换为矩阵索引即可。

N[N == 1] <- M[N == 1]
N
#      [,1] [,2] [,3]
# [1,]    0    0    0
# [2,]    0    5    0
# [3,]    0    0    0

replace(N, N == 1, M[N == 1])