2016-09-26 3 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

Im не 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 

и теперь с [:, 2] будет последний столбец

6 
2 
5 
4 
1 
3 

Конечно, все это может быть прессуют в

sortrows(hcat(a, 1:length(a)), by = x -> x[1])[:,2] 

, но я чувствовал, как объяснить, как это работает

Im действительно надеюсь, кто-то разместил лучший способ сделать это, если таковой существует