【发布时间】:2021-05-30 22:44:30
【问题描述】:
当给定阵列= [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(数组) 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.913 0.913
0.913 0.913粗体数字 (0.913) 是我要停止 for 循环迭代的位置。
谁能帮助我如何编写这部分代码? 谢谢
【问题讨论】:
-
您确实意识到,当整体最大值出现在局部最大值小于迄今为止的全局最大值之后的某个点时,这将无法找到 blobab 最大值?
-
您的编辑使您的问题完全没有意义。您是否不小心删除了问题的文字?
标签: python for-loop sliding-window