【问题标题】:Julia - How to sort array and obtain the indexesJulia - 如何对数组进行排序并获取索引
【发布时间】:2022-02-23 06:00:47
【问题描述】:

我需要数组,一个包含权重,另一个包含类别(例如w=[3, 4, 1, 2],x= ["a","b","c","c"])。现在,我想使用权重数组对数组x 进行排序。如何用最少的代码做到这一点?有没有办法对数组进行排序并获得对应的索引,这样你就可以在任何其他相同大小的数组中使用这个新的排序顺序?

我知道使用 DataFrames 可以做到这一点,但我正在寻找一种方法来做到这一点,而无需诉诸于此。

【问题讨论】:

    标签: sorting julia


    【解决方案1】:

    你想要sortperm 函数。

    w = [30, 40, 10, 20]
    x = ["a","b","c","d"]
    
    julia> permvec = sortperm(w)
    4-element Array{Int64,1}:
     3
     4
     1
     2
    
    julia> wsorted = w[permvec]
    4-element Vector{Int64}:
     10
     20
     30
     40
    
    julia> xsorted = x[permvec]
    4-element Array{String,1}:
     "c"
     "d"
     "a"
     "b"
    

    【讨论】:

    • 当您需要在相同大小的数组上重复执行此操作时,还有sortperm!
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2016-06-28
    • 2014-06-28
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多