首页 > 解决方案 > 如何根据类似条目在 python 中对 ND 数组求和?

问题描述

假设我在 python 中有一个 ND 数组,由以下方案表示:

["Event ID", "Event Location", "Event Cost"]
data = \
[[1, 0, 500]
[1, 0, 250]
[1, 1, 300]
[2, 0, 750]
[2, 1, 400]
[2, 1, 500]]

如何折叠此数组以总结在同一事件位置发生的具有相同事件 ID 的条目的成本?这将在最后给我以下数组:

[[1, 0, 750]
[1, 1, 300]
[2, 0, 750]
[2, 1, 900]]

标签: pythonnumpy

解决方案


这是itertools.groupby的经典用例:

import itertools

result = [
    [i, loc, sum(cost for _, _, cost in costs)]
    for (i, loc), costs in itertools.groupby(data, key=lambda t: (t[0], t[1]))
]

推荐阅读