sum - 根据条件计算数组中的累积和
问题描述
在我使用的另一种语言中,有一个名为 SumSince(condition, array) 的函数。因此,例如,我有一个 DataArray 和一个 ConditionArray 看起来像
数据数组 | 条件数组 | 结果数组 |
---|---|---|
1 | 1 | 1 |
2 | 0 | 3 |
3 | 0 | 6 |
4 | 1 | 4 |
5 | 0 | 9 |
6 | 0 | 15 |
然后 ResultArray = SumSince( ConditionArray, DataArray ) 将给出第 3 列中显示的数组
所以它从条件开始累积。当它满足一个新条件时,它将从该条件开始从头开始累积。
Python中是否有类似的功能。我找不到它。我知道我可以使用循环,但我很确定某处有一个功能可以实现这一点
谢谢
解决方案
我暂时只是写了自己的函数。在 Pandas 中,你有 Cumsum。我只是没有找到如何将它用作 SumSince。我在下面写了一个函数。似乎工作。可能是丑陋的代码,但刚刚开始使用 Python。如果有人知道这个已经存在的功能,请告诉我,谢谢
def SumSince(condition, array):
length = len(array)
outputArray = [0] * length
i = 0
csum = 0
while i < length:
if (condition[i] == 0):
csum = array[i] + csum
outputArray[i] = csum
elif (condition[i] == 1):
csum = array[i]
outputArray[i] = csum
i += 1
return outputArray
array = [1,2,3,4,5,6]
condition = [1,0,0,1,0,0]
tst = SumSince(condition, array)
tst
[1, 3, 6, 4, 9, 15]
推荐阅读
- google-apps-script - 发送电子邮件时更新信息并取消选中框
- python - 如何测试输入是否为整数?(Python)
- asp.net - IIS 中托管的 Web 应用程序无法从同一服务器连接到 MongoDB
- javascript - 动态材质ui下拉菜单
- css - CSS 容器滚动条 - 为什么我的项目不能保持在内容大小范围内并制作滚动条?
- android - 颤振:Android“网络安全配置”
- r - 使用 data.table 按组对变量进行排名
- git - 用于远程提交的 git squash
- python - qlineedit 获取文本后如何删除空格?
- python - 如何避免在 python 中重新初始化昂贵的对象