【发布时间】:2020-08-17 18:28:09
【问题描述】:
我正在尝试访问 NxN 矩阵“msk”的特定元素,索引存储在 Mx2 数组“idx”中。我尝试了以下方法:
N = 10
msk = zeros(N,N)
idx = [1 5;6 2;3 7;8 4]
#CIs = CartesianIndices(( 2:3, 5:6 )) # this works, but not what I want
CIs = CartesianIndices((idx[:,1],idx[:,2]))
msk[CIs] .= 1
我得到以下信息:错误:LoadError:MethodError:没有方法匹配 CartesianIndices(::Tuple{Array{Int64,1},Array{Int64,1}})
【问题讨论】:
-
如果您可以控制索引的存储方式,则可以非常干净地编码。例如,如果
ind = [(1,5), (6,2), (3,7), (8,4)],那么您的笛卡尔索引就是CartesianIndex.(ind)。如果您对索引矩阵感到困惑,则必须使用更复杂的解决方案eachcol。