掩码数组分配
我有一个 NxN 数组 A、一个 NxN 数组 B 和一个 NxN 掩码(位矩阵)M。现在我只想将 B 的值复制/分配给 A,仅用于 M 为真的索引。最好的方法是什么?
回答
您可以使用逻辑索引
julia> A = zeros(5,5); B = ones(5,5); M = rand(Bool, 5, 5)
5×5 Matrix{Bool}:
1 0 1 1 0
1 0 1 1 0
1 0 1 1 1
0 0 0 1 0
0 0 0 0 1
julia> A[M] = B[M]; A
5×5 Matrix{Float64}:
1.0 0.0 1.0 1.0 0.0
1.0 0.0 1.0 1.0 0.0
1.0 0.0 1.0 1.0 1.0
0.0 0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0 1.0
或者干脆写一个循环:
julia> for i in eachindex(A, B, M)
if M[i]
A[i] = B[i]
end
end