将一个特殊的循环转化为numpy函数

大家好我在写一个算法,其中需要一个循环,但我怎么想都不知道如何把整个循环转化为numpy函数,可能是对函数库本身还不太熟悉程序如下:s=0forainarrays+=ai... 大家好
我在写一个算法,其中需要一个循环,但我怎么想都不知道如何把整个循环转化为numpy函数,可能是对函数库本身还不太熟悉
程序如下:

s = 0
for a in array
s += a
if s < 0:
s = 0

其中累加的运算我找到cumsum函数可以运作,但是if这个部分就完全不知道如何下手。
请高人指点。谢谢!
百度格式太差了,我直接贴个图。
展开
 我来答
矮丑穷挫叟
2018-04-23
知道答主
回答量:21
采纳率:40%
帮助的人:7.5万
展开全部
不太明白你这个循环的目的,当s < 0的时候s = 0,这在累加中有什么意义吗?
如果你的这个循环没错,那它已经足够简单了,不需要用numpy来改造,况且cumsum无法对累加的中间值做判断及修改。
追问
你好。
原始数列存在负数的。
算法本身要求累加的时候小于0了必须重置为0。
numpy改造的目的是让计算速度更快。因为哪怕是一个最简单的循环,numpy也比for要快好几个数量级。

经过几天的尝试我已经准备放弃了,你是不是也这么认为?
追答
据我所知没有这样的函数,或者你可以改下cumsum的C源码自己编译。我用reduce试了下性能反而下降。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式