【发布时间】:2021-07-04 16:36:00
【问题描述】:
我需要进行有界的累积求和 - 有点像电容器的充电状态。它不能超过其最大充电量,也不能低于 0。类似于:
Initial Cumulative Sum Constrained Sum
1 1 1
7 8 8
5 13 10
-8 5 2
-7 -2 0
3 1 3
我有一段代码:
charge_0 = 0
for i in range (1, len(charge_discharge)):
charge_1 = min(battery_size,max(0,(charge_0+charge_discharge[i])))
StorageSOC.append(charge_1)
charge_0 = charge_1
它比其他一些选项运行得更快,但我知道它没有优化。一个简单的累积总和要快几个数量级,所以我相信有更好的方法来做到这一点。我不能只在边界处应用剪辑。没有 for 循环的正确方法是什么?
【问题讨论】:
-
你的数据结构是什么?它是列表列表,还是更适合像熊猫数据框这样的快速并行数据操作
-
因为裁剪元素 N 会影响之后的所有总和。
-
Pranav:现在我将数据作为一个列表,因为我正在循环并在数组中查找索引会减慢该过程。但是,我不受任何特定格式的约束。这个问题与您提到的帖子有关,我在之前搜索时看到了这一点。但是,这涉及可以通过 groupby 完成的重置。我认为这不能使用 groupby (除非我遗漏了什么)。
标签: python performance for-loop cumulative-sum