2016-09-26 34 views

回答

15
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 
1

我不是100%我理解的問題,但我懷疑你問的是,如果你有矢量

a = [4,8,2] 

你想獲得

order = [2,3,1] 

如果這就是你需要的,我所做的是我使用sortcols,這是一個怪胎解決方法

如果你有一個載體,

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] 

,但我覺得解釋它是如何工作

我真的希望有人張貼一個更好的方式來做到這一點,如果存在