julia 快速查找数组值列表

julia fast lookup of a list of array values

我有一个二维数组形式的查找 table 和一个索引列表(以两个一维数组 xs、ys 的形式),我想在其中评估查找 table.如何快速完成这个任务?

这看起来像是一个标准问题,但是我没有发现在 docs 中的一般索引列表(例如,不是笛卡尔积)中查找数组值。我试过了

result = zeros((10^6,))
for i in [1:10^6]
    x = xs[i]
    y = ys[i]
    result[i] = lookup[x, y]
end

除了看起来有点笨重之外,这段代码也比等效的 numpy 代码慢 10 倍。它看起来也像是一个标准问题,但是我没有发现在 docs 中的一般索引列表(例如,不是笛卡尔积)中查找数组值。

那么什么是上述代码的快速替代品?

您可以尝试 broadcast_getindex(参见 http://julia.readthedocs.org/en/latest/stdlib/arrays/#Base.broadcast_getindex)。

否则,如果您将 [1:10^6] 更改为 1:10^6,您的代码看起来应该非常高效。

这是 Base.getindex 的更新链接(参见 https://docs.julialang.org/en/v1/base/collections/#Base.getindex). The broadcasted implementation found here