我需要按照第三列按升序对Julia中的四列矩阵进行排序,然后按第四列按降序排序。
答案 0 :(得分:5)
以任意顺序对列进行链式词典排序的最简单方法是传递转换by
函数: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