You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Rust实现Python中numpy.diff的Vec等效功能?

Rust 实现 numpy.diff 的简洁迭代器写法

要模拟 Python 中 numpy.diff 的功能(计算数组相邻元素的后项减前项差值),用 Rust 迭代器可以写出非常简洁的一行代码。

首先可以优化你原有的数组创建代码,没必要先转成 Vec<i64> 再转 f64,直接一步到位更地道:

let a: Vec<f64> = (0..5).map(|x| x as f64).collect();

然后核心的差值计算,利用迭代器的 zip 方法将原数组迭代器和跳过第一个元素的迭代器配对,再通过 map 计算差值,一行就能完成:

let a_diff: Vec<f64> = a.iter().zip(a.iter().skip(1)).map(|(prev, curr)| curr - prev).collect();

完整代码示例:

fn main() {
    let a: Vec<f64> = (0..5).map(|x| x as f64).collect();
    let a_diff: Vec<f64> = a.iter().zip(a.iter().skip(1)).map(|(prev, curr)| curr - prev).collect();
    println!("{:?}", a_diff); // 输出: [1.0, 1.0, 1.0, 1.0]
}

代码说明

  • a.iter().zip(a.iter().skip(1)):将原数组的每个元素和它的下一个元素配对,比如原数组是 [0.0,1.0,2.0,3.0,4.0],配对后得到 [(0.0,1.0), (1.0,2.0), (2.0,3.0), (3.0,4.0)]
  • map(|(prev, curr)| curr - prev):对每一对元素计算后项减前项的差值
  • collect():将迭代器生成的差值收集成 Vec<f64>

内容的提问来源于stack exchange,提问作者Chad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:55:14