类似于睡眠周期警报,我需要在最小/最大值范围内,将数组切到尽可能最佳的位置(在我的方案中为低数字)。
为简化起见,如果我能够找到数组中最长的最低序列,我想我可以继续前进。
例如:
[1,2,3,0,1,4,5,6,6,0.1,1.1,2,4]
应返回9,因为0.1是最长的最低值的第一个值,即使我的值小于0.1;
[4,5,7,10,0.13,0.2,0.12,8,9,28,0.1,0.11,0.102]
应该返回10,因为它小于1,即使该序列具有相同数量的数字...
长序列(在我的场景中)比低序列更重要。知道如何开始吗?我没有阈值,但是我认为(如果是即时计算的)涉及此的解决方案应该可以
答案 0 :(得分:0)
我不确定“最长的最低价”背后的复杂逻辑,但这可能是一个不错的开始:
data = [4,5,7,10,0.13,0.2,0.12,8,9,28,0.1,0.11,0.102]
result = [[0,0]]
threshold = 1.0
for num, val in enumerate(data) :
if val < threshold :
if result[-1][1] == 0 : # start a new sequence
result[-1][0] = num
result[-1][1] = 1
else : # continue existing sequence
result[-1][1] += 1
else : # end the previous sequence
if result[-1][1] > 0 :
result.append([0,0])
返回(第一个元素,序列长度)对:
[[4, 3], [10, 3]]
您可以进一步分析第一个元素的长度,值或您喜欢的任何内容。