我有一个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中的一般索引列表(例如不是笛卡尔积)中查找数组值。
那么什么是上述代码的快速替代品?
答案 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。