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

如何用NumPy/Pandas计算列的反向累积求和(行至末尾累积和)

问题描述

现有如下5行2列的矩阵数据:

Volume  Weight
1   6
2   7
3   8
4   9
5   10

需求:

  • 针对Weight列的每一行,计算从该行到最后一行的求和值;
  • 生成包含累积求和列的结果,如下所示:
Volume  Weight  Cumulative Weight
1   6   40
2   7   34
3   8   27
4   9   19
5   10  10

已知可通过for循环实现,请问是否有更简便的NumPy/Pandas方法解决该问题?

解决方案

当然有更高效的方法,不用手动写循环,直接用库自带的函数就能快速实现:

Pandas 实现

Pandas可以通过cumsum()结合数组反转来实现反向累积求和:

import pandas as pd

# 构造原始数据
data = {
    'Volume': [1, 2, 3, 4, 5],
    'Weight': [6, 7, 8, 9, 10]
}
df = pd.DataFrame(data)

# 计算从当前行到最后一行的累加值
df['Cumulative Weight'] = df['Weight'][::-1].cumsum()[::-1]

print(df)

原理很简单:先把Weight列反转,做正向累积求和,再将结果反转回来,就得到了每一行到末尾的累加值。

NumPy 实现

用NumPy的cumsum()也能实现相同逻辑,步骤类似:

import numpy as np

# 构造原始数组
arr = np.array([
    [1, 6],
    [2, 7],
    [3, 8],
    [4, 9],
    [5, 10]
])

# 提取Weight列,计算反向累积求和后合并为新数组
cumulative_weight = np.cumsum(arr[:, 1][::-1])[::-1]
result = np.column_stack((arr, cumulative_weight))

print(result)

先提取数组的第二列(Weight),反转后做累积求和,再反转回原顺序,最后用column_stack把原数组和新计算的列合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:54:14