Julia 中的排序索引(相当于 numpy 的 argsort)



哪个Julia的函数返回对数组排序的索引?Python的Numpy使用argsort .

julia> r = rand(0:9, 5)
5-element Array{Int64,1}:
 5
 0
 6
 1
 1
julia> i = sortperm(r)
5-element Array{Int64,1}:
 2
 4
 5
 1
 3
julia> r[i]
5-element Array{Int64,1}:
 0
 1
 1
 5
 6

我不是100%理解这个问题,但我怀疑你问的是,如果你有向量

a = [4,8,2]

你想要得到

order = [2,3,1]

如果这是你需要的,我所做的是使用排序,这是一个很好的解决方法

如果你有一个向量,

a = [5,2,8,4,3,1]

创建一个新的

b = hcat(a, 1:length(a))
 5  1
 2  2
 8  3
 4  4
 3  5
 1  6

则调用

c = sortrows(b, by = x -> x[1])
 1  6
 2  2
 3  5
 4  4
 5  1
 8  3

和现在的c[:,2]将是后一列

 6
 2
 5
 4
 1
 3
当然,这些都可以压缩到
sortrows(hcat(a, 1:length(a)), by = x -> x[1])[:,2]

但是我想解释一下它是如何工作的

我真的希望有人发布一个更好的方法来做到这一点,如果有的话

相关内容

  • 没有找到相关文章

最新更新