当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia sortslices用法及代码示例


用法:

sortslices(A; dims, alg::Algorithm=DEFAULT_UNSTABLE, lt=isless, by=identity, rev::Bool=false, order::Ordering=Forward)

对数组的切片进行排序 A 。必需的关键字参数 dims 必须是整数或整数元组。它指定对切片进行排序的维度。

例如,如果A 是一个矩阵,dims=1 将对行进行排序,dims=2 将对列进行排序。请注意,一维切片上的默认比较函数按字典顺序排序。

对于其余的关键字参数,请参阅 sort! 的文档。

例子

julia> sortslices([7 3 5; -1 6 4; 9 -2 8], dims=1) # Sort rows
3×3 Matrix{Int64}:
 -1   6  4
  7   3  5
  9  -2  8

julia> sortslices([7 3 5; -1 6 4; 9 -2 8], dims=1, lt=(x,y)->isless(x[2],y[2]))
3×3 Matrix{Int64}:
  9  -2  8
  7   3  5
 -1   6  4

julia> sortslices([7 3 5; -1 6 4; 9 -2 8], dims=1, rev=true)
3×3 Matrix{Int64}:
  9  -2  8
  7   3  5
 -1   6  4

julia> sortslices([7 3 5; 6 -1 -4; 9 -2 8], dims=2) # Sort columns
3×3 Matrix{Int64}:
  3   5  7
 -1  -4  6
 -2   8  9

julia> sortslices([7 3 5; 6 -1 -4; 9 -2 8], dims=2, alg=InsertionSort, lt=(x,y)->isless(x[2],y[2]))
3×3 Matrix{Int64}:
  5   3  7
 -4  -1  6
  8  -2  9

julia> sortslices([7 3 5; 6 -1 -4; 9 -2 8], dims=2, rev=true)
3×3 Matrix{Int64}:
 7   5   3
 6  -4  -1
 9   8  -2

更高的维度

sortslices 自然地扩展到更高的维度。例如,如果 A 是一个 2x2x2 数组,则 sortslices(A, dims=3) 将对第 3 维内的切片进行排序,将 2x2 切片 A[:, :, 1]A[:, :, 2] 传递给比较函数。请注意,虽然高维切片没有默认顺序,但您可以使用 bylt 关键字参数来指定这样的顺序。

如果dims 是元组,则dims 中的维度顺序是相关的,并指定切片的线性顺序。例如,如果 A 是三维的,而 dims(1, 2) ,则重新排列前两个维度的顺序,以便对(剩余的第三维的)切片进行排序。如果 dims 改为 (2, 1),则将采用相同的切片,但结果顺序将改为行优先。

高维示例

julia> A = permutedims(reshape([4 3; 2 1; 'A' 'B'; 'C' 'D'], (2, 2, 2)), (1, 3, 2))
2×2×2 Array{Any, 3}:
[:, :, 1] =
 4  3
 2  1

[:, :, 2] =
 'A'  'B'
 'C'  'D'

julia> sortslices(A, dims=(1,2))
2×2×2 Array{Any, 3}:
[:, :, 1] =
 1  3
 2  4

[:, :, 2] =
 'D'  'B'
 'C'  'A'

julia> sortslices(A, dims=(2,1))
2×2×2 Array{Any, 3}:
[:, :, 1] =
 1  2
 3  4

[:, :, 2] =
 'D'  'C'
 'B'  'A'

julia> sortslices(reshape([5; 4; 3; 2; 1], (1,1,5)), dims=3, by=x->x[1,1])
1×1×5 Array{Int64, 3}:
[:, :, 1] =
 1

[:, :, 2] =
 2

[:, :, 3] =
 3

[:, :, 4] =
 4

[:, :, 5] =
 5

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.sortslices — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。