Lag*_*aer 5 python arrays numpy
基本上,我的问题的逻辑是:
running_sum = my_array.cumsum()
greater_than_threshold = running_sum > threshold
index = greater_than_threshold.searchsorted(True)
Run Code Online (Sandbox Code Playgroud)
即:找到第一个索引,其中条目的累积总和my_array高于阈值。
现在的问题是:我知道这my_array会很大,但条件会很早就满足。当然,这意味着我可以做一个简单的while循环来手动计算累积总和何时大于阈值,但我想知道是否有一种 numpythonic 方法,即一种无需评估整个数组即可测试某些条件的方法.
编辑:此方法比使用 NumPy 的searchsorted和慢cumsum,请参阅 user2357112 的评论和timeit测试。
cumsum将计算整个数组的累积和。相反,只需自己迭代数组即可:
running_sum = 0
for index, entry in enumerate(my_array.flat):
running_sum += entry
if running_sum > threshold:
break
if running_sum < threshold:
index = -1 #if the sum never reaches the threshold
Run Code Online (Sandbox Code Playgroud)