实际上,我在给定特定窗口大小的情况下计算吞吐量。 但是,我不知道如何通过窗口累积值。例如:
time = [0.9, 1.1, 1.2, 2.1, 2.3, 2.6]
value = [1, 2, 3, 4, 5, 6]
应用窗口大小为1后,我应该
new_value = [1, 5, 15]
我已经想过使用数据框的索引但不知道如何实现它,因为我是python的新手。
答案 0 :(得分:3)
您可以将itertools.groupby
与自定义分组功能
from itertools import groupby
def f(time, values, dt=1):
vit = iter(values)
return [sum(v for _, v in zip(g, vit)) for _, g in groupby(time, lambda x: x // dt)]
In [14]: f([0.9, 1.1, 1.2, 2.1, 2.3, 2.6], [1, 2, 3, 4, 5, 6])
Out[14]: [1, 5, 15]
In [15]: f([0.9, 1.1, 1.2, 2.1, 2.3, 2.6], [1, 2, 3, 4, 5, 6], dt=2)
Out[15]: [6, 15]
请注意,对于大小为1的窗口,您只需使用groupby(time, int)
。
答案 1 :(得分:1)
您可以使用Counter
:
time = [0.9, 1.1, 1.2, 2.1, 2.3, 2.6]
value = [1, 2, 3, 4, 5, 6]
from collections import Counter
counter = Counter()
for t,v in zip(time, value):
counter[int(t)] += v
print(sorted(counter.items()))
# [(0, 1), (1, 5), (2, 15)]