2014-04-20 62 views
12

Tôi muốn sắp xếp ma trận của tôi A theo cột 2 sau đó 3.Julia: Sắp xếp Matrix theo cột 2 sau đó 3

A = round(randn(100,4)) 

Có lẽ cái gì đó như:

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 

Trả lời

18

Có một chức năng sortrows rằng có một từ khóa by cho phép bạn thực hiện việc này:

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 

API phân loại là khá linh hoạt - bạn có thể tìm thấy tài liệu here.

Các vấn đề liên quan