Sorting 朱莉娅:按两列不同的顺序对矩阵排序

Sorting 朱莉娅:按两列不同的顺序对矩阵排序,sorting,matrix,julia,Sorting,Matrix,Julia,我需要对Julia中的四列矩阵按升序按第三列排序,然后按降序按第四列排序。对任意顺序的列进行链式词典排序的最简单方法是通过函数传递转换:sortrows(a,by=x->(x[3],x[4])…但这只是两列升序的词典。为了进行更有趣的行为,您可以将自定义比较函数传递给sortrows: julia> A = rand(1:3,6,4) 6x4 Array{Int64,2}: 3 1 1 2 1 1 3 1 1 1 2 1 2 1 3 3 1 3 3

我需要对Julia中的四列矩阵按升序按第三列排序,然后按降序按第四列排序。

对任意顺序的列进行链式词典排序的最简单方法是通过函数传递转换:
sortrows(a,by=x->(x[3],x[4])
…但这只是两列升序的词典。为了进行更有趣的行为,您可以将自定义比较函数传递给
sortrows

julia> A = rand(1:3,6,4)
6x4 Array{Int64,2}:
 3  1  1  2
 1  1  3  1
 1  1  2  1
 2  1  3  3
 1  3  3  1
 2  3  2  3

julia> sortrows(A, lt=(x,y)->isless(x[3],y[3]) || (isequal(x[3],y[3]) && isless(y[4],x[4])))
6x4 Array{Int64,2}:
 3  1  1  2
 2  3  2  3
 1  1  2  1
 2  1  3  3
 1  1  3  1
 1  3  3  1

使用相同的
by
参数,
by=x->(x[3],-x[4])
将对第四列执行降序(注意减号)。