朱莉娅:按不同的顺序将矩阵按2列排序

时间:2016-03-04 20:03:30

标签: sorting matrix julia

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

1 个答案:

答案 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