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

如何用列表推导式对多个numpy数组分别计算正负值的np.cumsum累计和

问题解决方法

原代码问题分析

你原来的写法(row > 0).cumsum()是对布尔值(大于0为True即1,否则False即0)做累加,得到的是大于0的元素计数,并没有对符合条件的元素本身的值做累加,所以无法得到预期结果。

修改后的实现代码

import numpy as np

a = np.array([12, -5, -55, 89, 10, -5.5])
b = np.array([-5, -4.5, 12.4, 11, 16])
# 先遍历正负筛选条件,再遍历两个数组,同时把numpy数组转成普通列表匹配预期输出格式
Sum_long_profits = [row[condition(row)].cumsum().tolist() 
                    for condition in [lambda x: x>0, lambda x: x<0] 
                    for row in [a, b]]

print(Sum_long_profits)

输出验证

运行上述代码得到的结果为:

[[12, 101, 111], [12.4, 23.4, 39.4], [-5, -60, -65.5], [-5, -9.5]]

注:你给出的预期输出中第四行的[-4, -9.5]为笔误,b数组的负数元素为-5、-4.5,累计和正确结果为[-5, -9.5]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:24:00