如何将 Vec<Vec<f64>> 的元素求和为 Vec<f64>?

Mat*_*ger 3 rust

我正在寻找一种“生锈”的方法将 Vec<Vec> 累积到 Vec 中,以便每个内部 Vec 的第一个元素相加在一起,每个 Vec 的每个第二个元素相加在一起,等等......,结果被收集到 Vec 中?如果我只使用 sum()、fold() 或accumulate(),我相信我会将整个第一个 Vec 累加到一个元素中,而不是包含在 2D Vec 中的每个内部 Vec 的第一个元素。

pub fn main() {
    let v1 = vec![1.1, 2.2, 3.3];
    let vv = vec![v1; 3];
    let desired_result = vec![3.3, 6.6, 9.9];
}
Run Code Online (Sandbox Code Playgroud)

orl*_*rlp 5

有时,在 Rust 中很容易忘记命令式方法的存在,并且是一个简单的解决方案。

let mut sums = vec![0.0; vv[0].len()];
for v in vv {
    for (i, x) in v.into_iter().enumerate() {
        sums[i] += x;
    }
}
Run Code Online (Sandbox Code Playgroud)