gpt4 book ai didi

python - 我如何用 numpy 向量化这个简单的算法?

转载 作者:行者123 更新时间:2023-11-28 18:50:22 25 4
gpt4 key购买 nike

或者像这样的真正的迭代算法是不可向量化的吗?

s += 用法可以用 cumsum 向量化,但是求和的底数是有问题的。

是否有一些奇特的方式来使用滞后或移位?

s = 0
for (time, usage) in timeseries:
s += usage
s = max(s-rate, 0)
new_timeseries[time] = s

我仔细研究了一会儿,但什么也想不出来。

最佳答案

先将timeseries 放入一个数组中。假设 timeseries 的值为 my_array。然后,

import numpy as np
s = np.cumsum(my_array) - rate
s[s < 0] = 0
new_timeseries = s

更新:这是不对的。当 s 增量低于速率时,它不考虑将 cumsum 归零。您可以找到 cumsum 低于导数的点:

In [1]: dd = np.diff(np.cumsum(my_array))
In [2]: dd < rate
Out[3]: array([ True, False, True, False, False, True, True,
True, True, False, True, False, True, False,
True, True, True, False, False], dtype=bool)

但是,这不会“重置”cumsum。可以沿着这些索引搜索并在“True” block 中执行 cumsum,但我不确定它是否比您的循环更有效。

关于python - 我如何用 numpy 向量化这个简单的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com