如何实现cumsum函数的逆运算?numpy中该怎么操作?
numpy后缀和数组还原实现方案
实现逻辑
你提供的输入数组本质是右向后缀累积和数组,对应关系为:
输入数组第i个元素 = 目标数组第i个元素到最后一个元素的和
因此还原逻辑非常简单:
- 输入数组的前n-1位 减去 输入数组后移1位的前n-1位,得到目标数组的前n-1位
- 直接保留输入数组的最后一位作为目标数组的最后一位
代码实现
import numpy as np # 构造输入数组 input_arr = np.array([20, 10, 1]) # 执行计算 res_arr = np.append(input_arr[:-1] - input_arr[1:], input_arr[-1]) print(res_arr)
运行输出:
[10 9 1]
你也可以用np.diff方法简化写法,效果完全一致:
res_arr = np.append(-np.diff(input_arr), input_arr[-1])
通用说明
该方法适用于任意长度的同类型后缀和数组,无需调整逻辑即可直接复用。
内容的提问来源于stack exchange,提问作者Galen BlueTalon
相关产品推荐
相关产品推荐

