ndarray。有没有一种有效的方法来交换不同数组中的2个rowcolsetc. ?

问题描述 投票:0回答:1

使用 阵列 有2个 Array 结构,是否有一种有效的方法来交换2个rowscols(沿某个轴的切片)?

这个标题真的是对这个问题的总结。

multidimensional-array rust
1个回答
1
投票

虽然不同的人可能对 "有效 "有不同的理解,但一个直接的方法是通过临时分配rowscolumns给对方。下面是一个例子,两个行(游乐场):

let mut a = arr2(&[[1, 2, 3], [4, 5, 6]]);
let mut b = arr2(&[[7, 8, 9], [10, 11, 12], [13, 14, 15]]);
let mut a_row = a.slice_mut(s![1, ..]);
let mut b_row = b.slice_mut(s![2, ..]);
let tmp = a_row.to_owned();
a_row.assign(&b_row);
b_row.assign(&tmp);
println!("a = {:?}", a);
println!("b = {:?}", b);

或者,你可以用 azip!() 来进行元素交换,避免创建一个临时数组,甚至可以用 par_azip! 来并行复制。

© www.soinside.com 2019 - 2024. All rights reserved.