根据另一个矩阵的值索引一个矩阵
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])
我有一个矩阵(实际上是一个 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])