【发布时间】:2022-02-23 06:00:47
【问题描述】:
我需要数组,一个包含权重,另一个包含类别(例如w=[3, 4, 1, 2],x= ["a","b","c","c"])。现在,我想使用权重数组对数组x 进行排序。如何用最少的代码做到这一点?有没有办法对数组进行排序并获得对应的索引,这样你就可以在任何其他相同大小的数组中使用这个新的排序顺序?
我知道使用 DataFrames 可以做到这一点,但我正在寻找一种方法来做到这一点,而无需诉诸于此。
【问题讨论】:
我需要数组,一个包含权重,另一个包含类别(例如w=[3, 4, 1, 2],x= ["a","b","c","c"])。现在,我想使用权重数组对数组x 进行排序。如何用最少的代码做到这一点?有没有办法对数组进行排序并获得对应的索引,这样你就可以在任何其他相同大小的数组中使用这个新的排序顺序?
我知道使用 DataFrames 可以做到这一点,但我正在寻找一种方法来做到这一点,而无需诉诸于此。
【问题讨论】:
你想要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!。