当给定数组= [0.771,0.812,0.812,0.847,0.847,0.847,0.849,0.847,0.887,0.862,0.863,0.892,0.874,0.874,0.899,0.945,0.910,0.872,0.887,0.874,0.872,0.896,0.896 ,0.860、0.912、0.913、0.912、0.871、0.871、0.865、0.899、0.866]
我想通过滑动窗口算法找到最大值。(不是通过使用np.max())
n = len(array)k = 12(这是窗口大小)
这是代码:
for i in range(n-k):
max = arr[i]
for j in range (1, k):
if arr[i+j] >= max:
max = arr[i+j]
print(str(max) + "", end="")
这将给出输出= 0.892 0.892 0.892 0.899 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.913 0.913 0.913 0.913
根据输出,我们可以看到最大值为0.945。但是,当输出的最后一个元素小于先前的最后一个元素时,我想停止循环迭代。
0.892 0.892 0.892 0.899 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.945 0.913 0.913 0.913 0.913
我想停止for循环迭代的地方是粗体数字(0.913)。
谁能帮我编码这部分吗?谢谢
globalValue = arr[0]
flag = False
for i in range(n-k):
max = arr[i]
if flag:
break
for j in range (1, k):
if arr[i+j] >= max:
max = arr[i+j]
if max>=globalValue:
print(str(max) + "", end="")
globalValue = max
else:
print(str(max) + "", end="")
flag = True
globalValue
将存储打印的当前值并进行更新。flag
将检查是否打印了较低的值。这样,您就可以解决您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句