我正在寻找一种有效的方法来迭代ndarray
中二维数组中行的排列。我不需要更改或保留排列的数组,因此我想避免复制。
也就是说,我要执行以下操作,除了select
分配不必要的数组:
use ndarray::{Axis, Array}; // 0.13.1
use rand::seq::SliceRandom; // 0.7.3
use std::iter::FromIterator;
fn main() {
let array = Array::from_iter(0..15).into_shape((5, 3)).unwrap();
println!("Before shuffling rows:\n{}", array);
let mut permutation: Vec<usize> = (0..array.nrows()).collect();
permutation.shuffle(&mut rand::thread_rng());
let permuted = array.select(Axis(0), &permutation);
for (i, row) in permuted.axis_iter(Axis(0)).enumerate() {
println!("Row number {} is {}!", i, row);
}
}
我知道ndarray
Github页面包含类似内容的example,但其中包含一些我不理解的不安全代码,因此宁愿不适应自己的用例
答案 0 :(得分:0)
使用index_axis,我错过了一个明显的答案:
[{ 'id':2,'name': 'AB','subject': ['Physics','Engineering'],'type':'Permanent','Location':'NY'},{'id':4,'name':'ABCD','subject': ['Physics','Engineering'],'type':['Contract','Guest'],'Location':'NY'}]
不过,我敢肯定有更好的方法可以做到这一点,而且我仍然很想看到它们。