如何用元组向量索引Julia二维数组以获取对应值?
解决Julia中用元组向量索引二维数组的问题
在Julia里,直接用元组向量tupl1作为二维数组m1的索引会报错,因为多维数组的索引规则要求不同维度的索引分开传递,而元组向量会被误解析为单一维度的无效索引。下面是几种可行的解决方式:
方法1:使用广播的getindex
利用Ref固定数组对象,对每个元组单独调用索引操作:
getindex.(Ref(m1), tupl1)
运行后会得到你期望的结果:
4-element Vector{Int64}: 1 0 1 1
方法2:拆分元组为行、列索引向量
把元组向量拆成单独的行索引和列索引数组,再用多维索引方式取值:
rows = first.(tupl1) # 提取所有元组的第一个元素(行号) cols = last.(tupl1) # 提取所有元组的第二个元素(列号) m1[rows, cols]
这种方式和方法1效果一致,适合需要单独使用行/列索引的场景。
方法3:用map遍历元组向量
通过map逐个处理每个元组,获取对应位置的值:
map(t -> m1[t], tupl1)
逻辑直观易懂,同样能输出目标结果。
内容的提问来源于stack exchange,提问作者flee
相关产品推荐
相关产品推荐

