Rust游乐场列出here
我正在使用ndarray,我正在尝试使用数组的部分进行数学运算。这是一个生成我所看到的错误的示例:
use ndarray::{Array1, Array2};
fn main() {
let mut bob = Array2::<i16>::eye(3);
let ralph = Array1::<i16>::ones([3]);
for mut b in bob.outer_iter() {
b += b + ralph;
}
println!("{}", bob);
}
这给出了错误error[E0369]: cannot add `ArrayBase<OwnedRepr<i16>, Dim<[usize; 1]>>` to `ArrayBase<ViewRepr<&i16>, Dim<[usize; 1]>>`
我希望的是bob
的版本,并在每行中添加ralph
。有没有办法做到这一点,而不仅仅是逐个元素地生成一个新的数组?
最佳答案
bob.outer_iter()
逐一遍历值,为它们提供不变的引用。为了能够进行变异,我们必须使用bob.outer_iter_mut()
。
话虽如此,我认为这不是您想要的。有一种简单的方法可以将ndarrays
一起添加:
use ndarray::{Array1, Array2};
fn main() {
let mut bob = Array2::<i16>::eye(3);
let ralph = Array1::<i16>::ones([3]);
let sue = bob + ralph;
println!("{}", sue);
}
关于rust - 无法对array::Viewer进行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66378388/