2014-04-20 13 views
12

Chciałbym sortować mój matrycę A przez kolumnie 2 ówczesnego 3.Julia: Matrix Sortuj według kolumny 2, a następnie 3

A = round(randn(100,4)) 

Może coś takiego:

sort(A,(0,2:3)) 
100x4 Array{Float64,2}: 
    0.0 -2.0 -2.0 -1.0 
-1.0 -2.0 -1.0 1.0 
    1.0 -2.0 -1.0 2.0 
-1.0 -2.0 0.0 0.0 
-1.0 -2.0 0.0 -1.0 
-0.0 -2.0 0.0 -1.0 
    1.0 -2.0 0.0 0.0 
    1.0 -2.0 1.0 -1.0 
-0.0 -2.0 2.0 -1.0 
-0.0 -1.0 -2.0 1.0 
    ⋮      
-0.0 1.0 0.0 1.0 
    1.0 1.0 1.0 1.0 
    0.0 1.0 1.0 -1.0 
-0.0 1.0 2.0 0.0 
-0.0 2.0 -1.0 0.0 
-2.0 2.0 -1.0 1.0 
    2.0 2.0 -0.0 -1.0 
-1.0 2.0 -0.0 -1.0 
    1.0 2.0 0.0 2.0 
-1.0 2.0 2.0 0.0 

Odpowiedz

18

Jest sortrows funkcja zajmuje by słowa kluczowego, które pozwala to zrobić:

julia> sortrows(A, by=x->(x[2],x[3])) 
100x4 Array{Float64,2}: 
    2.0 -3.0 -0.0 0.0 
-1.0 -2.0 -1.0 -1.0 
-0.0 -2.0 -0.0 0.0 
    0.0 -2.0 0.0 -1.0 
    1.0 -2.0 1.0 2.0 
-0.0 -2.0 1.0 -1.0 
-1.0 -1.0 -2.0 1.0 
-1.0 -1.0 -2.0 -0.0 
-1.0 -1.0 -1.0 1.0 
-0.0 -1.0 -1.0 0.0 
    ⋮ 
-0.0 1.0 1.0 -1.0 
-0.0 1.0 2.0 1.0 
    0.0 1.0 2.0 0.0 
-1.0 2.0 -2.0 1.0 
    0.0 2.0 -2.0 -2.0 
    1.0 2.0 -1.0 0.0 
    0.0 2.0 -1.0 -0.0 
-1.0 2.0 0.0 -1.0 
-0.0 2.0 2.0 0.0 
    1.0 3.0 2.0 1.0 

sortowania API jest dość elastyczny - można znaleźć dokumentację here.

Powiązane problemy