當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。