julia快速查找数组值列表

时间:2015-06-29 11:41:03

标签: arrays julia

我有一个2d数组形式的查找表和一个索引列表(以两个1d数组xs,ys的形式),我想在其中评估查找表。如何快速完成这项工作?

它看起来像是一个标准问题,但我没有发现在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中的一般索引列表(例如不是笛卡尔积)中查找数组值。

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

2 个答案:

答案 0 :(得分:2)

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

否则,如果您只是将[1:10^6]更改为1:10^6,那么您的代码应该非常有效。

答案 1 :(得分:0)

以下是Base.getindex的更新链接(请参见https://docs.julialang.org/en/v1/base/collections/#Base.getindex)。广播的实现找到here