gpt4 book ai didi

arrays - 我们如何对rust-ndarray中的数组进行算术运算?

转载 作者:行者123 更新时间:2023-12-03 11:44:36 35 4
gpt4 key购买 nike

我正在学习自己rust-ndarray并编写了此简单代码。

use ndarray::prelude::*; 

fn main() {
let mut a = Array2::<f64>::ones((3, 3));
let b = (a*(a-0.5))*(a+2.0);
println!("{:?}",b);

}
我期望输出是
  [[ 1.5,  1.5,  1.5],
[ 1.5, 1.5, 1.5],
[ 1.5, 1.5, 1.5]]
但是它给这个错误
    |     let b = (a*(a-0.5))*(a+2.0);
| ------- ^ value used here after move
| |
| `a` moved due to usage in operator

最佳答案

运算符按值接受参数。这样可以进行优化,例如,如果您在操作后不再需要输入,则可以将相同的内存用于输出。在ndarray中,另外还有implemented for references,因此您可以简单地借用操作数来告诉编译器您以后要继续使用它们。但是,乘法仅针对拥有的值实现(我不确定为什么),因此您将需要克隆a或在两行中进行操作,以便可以在第二行中移动a:

let b = a.clone() * (&a-0.5) * (&a+2.0);
Playground
或者
let b = (&a-0.5) * (&a+2.0);
let b = a * b;
// Can't use a from now on
Playground

关于arrays - 我们如何对rust-ndarray中的数组进行算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64438708/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com