gpt4 book ai didi

rust - 如何根据其中一个Vecs的值对两个Vecs进行联合排序?

转载 作者:行者123 更新时间:2023-12-03 11:39:31 25 4
gpt4 key购买 nike

我有两个Vec,它们对应于特征向量及其对应的类标签的列表,我想按类标签对它们进行共同排序。

但是,Rust的sort_by是对切片进行操作,而不是对特征(或类似特征)进行泛型处理,并且闭包仅获取要比较的元素,而不是索引,因此我可以偷偷摸摸地将其排序为并行。

我已经考虑了解决方案:

let mut both = data.iter().zip(labels.iter()).collect();
both.sort_by( blah blah );
// Now split them back into two vectors

我不想每次都分配一个新的向量来执行此操作,因为数据的大小可能会非常大。

当然,我总是可以实现自己的排序,但是如果有内置的方法可以做得更好。

最佳答案

我刚刚写了a crate "permutation",它允许您执行此操作:)

let names = vec!["Bob", "Steve", "Jane"];
let salary = vec![10, 5, 15];
let permutation = permutation::sort(&salary[..]);
let ordered_names = permutation.apply_slice(&names[..]);
let ordered_salaries = permutation.apply_slice(&salary[..]);
assert!(ordered_names == vec!["Steve", "Bob", "Jane"]);
assert!(ordered_salaries == vec![5, 10, 15]);

将来可能会在单个函数调用中支持此功能。

关于rust - 如何根据其中一个Vecs的值对两个Vecs进行联合排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62046531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com