我有一个2D数组,例如:
julia> m = [1 2 3 4 5
6 7 8 9 10
11 12 13 14 15]
3×5 Array{Int64,2}:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
我想从每列中选择一个值并构建一维数组。
例如,如果我的选择是
julia> choices = [1, 2, 3, 2, 1]
5-element Array{Int64,1}:
1
2
3
2
1
然后所需的输出为[1, 7, 13, 9, 5]
。最好的方法是什么?在我的特定应用程序中,我随机生成这些值,例如
choices = rand(1:size(m)[1], size(m)[2])
谢谢!
答案 0 :(得分:3)
这可能是最简单的方法:
[m[c, i] for (i, c) in enumerate(choices)]
编辑:
如果最好的方法对你来说最快,那么这个函数应该比对大m
的理解快大约2倍:
function selector(m, choices)
v = similar(m, size(m, 2))
for i in eachindex(choices)
@inbounds v[i] = m[choices[i], i]
end
v
end