如何用Numpy实现列表的累积差值计算?
迭代减法生成新数组的解决方案
Python 原生实现
无需依赖第三方库,通过循环维护当前计算值即可完成需求:
original_list = [100, 70, 25, 10, 5] new_array = [] current_val = original_list[0] for num in original_list[1:]: current_val -= num new_array.append(current_val) print(new_array) # 输出: [30, 5, -5, -10]
Numpy 实现
高效简洁版(利用累积和)
借助np.cumsum计算后续元素的累积和,再用初始值减去这些累积和,一步得到目标数组:
import numpy as np arr = np.array([100, 70, 25, 10, 5]) # 计算从第二个元素开始的累积和 cumulative_sums = np.cumsum(arr[1:]) # 初始值减去累积和得到结果 result = arr[0] - cumulative_sums print(result) # 输出: array([ 30, 5, -5, -10])
循环版(逻辑与原生一致)
如果更习惯循环逻辑,Numpy版本的写法和原生Python基本相同:
import numpy as np arr = np.array([100, 70, 25, 10, 5]) result = [] current_val = arr[0] for num in arr[1:]: current_val -= num result.append(current_val) result = np.array(result) print(result) # 输出: array([ 30, 5, -5, -10])
内容的提问来源于stack exchange,提问作者logisticregress
相关产品推荐
相关产品推荐

