我想按第2列然后按3列对矩阵A进行排序。

A = round(randn(100,4))


也许像这样:

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

最佳答案

有一个sortrows函数带有一个by关键字,可让您执行以下操作:

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非常灵活-您可以找到文档here

09-09 21:16
查看更多