rust - 无法对array::Viewer进行数学运算

标签 rust

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/

相关文章:

assembly - 将 Rust 数组的指针传递到 x86-64 Asm 中——指针减一

rust - 为什么可变的 self 借用不会变成不可变的?

indexing - 与结构 child 共享模式

rust - 如何返回捕获参数的过滤迭代器?

compiler-errors - 无法构建插件示例

string - 如何将字符串与字符串文字匹配?

rust - 如果可能,实现 copy 的类型是否会被移动?

Rust(新手): Read and write (mutable) access to the same underlying array from multiple threads for in-memory database?

rust - 如何返回第一个非空字符串?

rust - 为什么我的闭包没有引起争论? [复制]