我想获得在 Rust 中对 a 进行排序的索引Vec。实际上,我想argsort()从 numpy.
例如:
let v = vec![1, 7, 4, 2];
let i = argsort(&v);
assert_eq!(i, &[0, 3, 2, 1]);
Run Code Online (Sandbox Code Playgroud)
kmd*_*eko 26
不确定是否有为此预先制作的东西,但它足够简单,可以自己实现.sort_by_key():
pub fn argsort<T: Ord>(data: &[T]) -> Vec<usize> {
let mut indices = (0..data.len()).collect::<Vec<_>>();
indices.sort_by_key(|&i| &data[i]);
indices
}
Run Code Online (Sandbox Code Playgroud)
看到它在操场上工作。
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |