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

如何实现类似np.diff的前项减后项a-b运算,而非默认后项减前项

实现numpy数组前项减后项(a-b)的方案

你需要的前项减后项运算,和np.diff默认的后项减前项是完全相反的关系,直接通过算术运算就能实现,可选方案如下:

  • 方案1:直接对np.diff的返回结果取反,代码最简单
    代码示例:
    import numpy as np
    # 替换为你完整的原始数组即可
    arr = np.array([79,54,74,62,85,55,88,85,51,85,54,84,78,47,83,52,62,84,52,79,51,47,78,69,74,83,55,76,78,79,73,77,66,80,74,52,48,80,59,90,80,58,84,58,73,83,64,53,82,59,75,90,54,80,54,83,71,64,77,81,59,84,48,82,60,92,78,78,65,73,82,56,79,71,62,76,60,78,76,83,75,82,70,65,73,88,76,80,48,86,60,90,50,78,63,72,84,75,51,82,62,88,49,83,81,47,84,52,86,81,75,59,89,79,59,81,50,85,59,87,53,69,77,56,88,81,45,82,55,90,45,83,56,89,46,82,51,86,53,79,81,60,82,77,76,59,80,49,96,53,77,77,65,81,71,70,81,93,53,89,45,86,58,78,66,76,63,88,52,93,49,57,77,68,81,81,73,50,85,74,55,77,83,83,51,78,84,46,83,55,81,57,76,84,77,81,87,77,51,78,60,82,91,53,78,46,77,84,49,83,71,80,49,75,64,76,53,94,55,76,50,82,54,75,78,79,78,78,70,79,70,54,86,50,90,54,54,77,79,64,75,47,86,63,85,82,57,82,67,74,54,83,73,73,88,80,71,83,56,79,78,84,58,83,43,60,75,81,46,90,46,74])
    res = -np.diff(arr)
    
    该方案计算后第一个结果就是25,完全符合你的预期。
  • 方案2:手动切片完成算术运算,不需要调用diff接口
    原理是直接取数组去掉最后一个元素的切片,减去数组去掉第一个元素的切片,就是前项减后项的结果:
    代码示例:
    res = arr[:-1] - arr[1:]
    
  • 如果你需要结合绝对值使用,直接对以上两个方案的结果取绝对值即可,两种方式的绝对值计算结果一致:
    代码示例:
    # 对应方案1的绝对值结果
    abs_res = np.abs(-np.diff(arr))
    # 对应方案2的绝对值结果
    abs_res = np.abs(arr[:-1] - arr[1:])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:06:01