gpt4 book ai didi

python - 系列的第一个元素在 numpy 中跨越阈值,处理永不跨越的系列

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:40 27 4
gpt4 key购买 nike

我有一个长度为 T 的 N 时间序列的 numpy 数组。我想要每个第一次超过某个阈值的索引,如果它从未超过,则为 -1 或类似的东西。取 ts_array = np.randn(N, T)

np.argmax(ts_array > cutoff, axis=1) 接近,但对于在时间 0 处超过阈值的时间序列和从未超过阈值的时间序列,它都返回 0。

np.where(...)np.nonzero(...) 是可能的,但它们的返回值需要相当可怕的处理才能提取向量我感兴趣的

这个问题类似于Numpy first occurence of value greater than existing value但那里的答案都没有解决。

最佳答案

一个类轮:

(ts > c).argmax() if (ts > c).any() else -1

假设 ts = ts_arrayc = cutoff

否则:

使用argmax()any()

np.random.seed([3,1415])

def xover(ts, cut):
x = ts > cut
return x.argmax() if x.any() else -1

ts_array = np.random.random(5).round(4)

ts_array 看起来像:

print ts_array, '\n'

[ 0.4449 0.4076 0.4601 0.4652 0.4627]

各种检查:

print xover(ts_array, 0.400), '\n'

0

print xover(ts_array, 0.460), '\n'

2

print xover(ts_array, 0.465), '\n'

3

print xover(ts_array, 1.000), '\n'

-1

关于python - 系列的第一个元素在 numpy 中跨越阈值,处理永不跨越的系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557173/

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