我有两个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
我不想每次都分配一个全新的向量来执行此操作,因为数据的大小可能非常大。
当然,我总是可以实现我自己的排序,但如果有一种内置的方法可以做到这一点,那就更好了。
我刚刚写了板条箱“排列” https://crates.io/crates/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]);
将来它可能会在单个函数调用中支持这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)