arrays - 给定每列的选择索引,从 2D 数组构造 1D 数组

标签 arrays julia

我有一个二维数组,例如:

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])

谢谢!

最佳答案

这可能是最简单的方法: [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

关于arrays - 给定每列的选择索引,从 2D 数组构造 1D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46856477/

相关文章:

java - 优化程序以查找数组中的第 k 个最小元素(Java,预期时间复杂度 O(n))

multithreading - Julia 1.5.2性能问题

JavaScript 在索引处插入数组

Julia:将东西打包成模块 vs include()-ing

julia - 如何迭代从所有可能的 b 位数组中选择 n 个 b 位数组的所有方式?

for-loop - 如何在 Julia 中使用矩阵设置约束?

types - 在 Julia 中,为什么在两个元素元组上使用 Pair?

javascript - 如何在不点击按钮的情况下随机显示数组?

arrays - Swift,字符串检查

php - 将多维 PHP 数组中父节点的值串在一起