Python之滑动窗口

匿名 (未验证) 提交于 2019-12-02 22:11:45

对于一个数组array = ["n","v","l","f",...,"y","c","k"];

  • input
    • 当前位置 index
    • 数组的长度 arraySize
    • 基于当前位置,(前/后)滑动窗口的元素数目 windowSize
      • 即 滑动窗口(假定:包含当前元素 array[idx]) 总长:2*windowSize+1
  • output
    • 滑动窗口中的元素下标数组
      • 形如
        • 【中间】idx=3,arraySize=7,windowSzie=2 => [1,2,3,4,5]
        • 【偏前】idx=0,arraySize=7,windowSzie=2 => [5,6,0,1,2]
        • 【偏后】idx=6,arraySize=7,windowSzie=2 => [4,5,6,1,0]
  • [1] 循环队列
  • [2] 充分利用模运算的特点:最左边下标 (idx-windowSize)%arraySize 与 最后边下标(idx+windowSize)%arraySize可计算出来

利用思路2,节省更多计算资源。

def window(idx,arraySize,windowSize):     """     获得当前位置的滑动窗口[元素的下标数组]     -----------------------------------     + 获得长为arraySize的列表中,以idex为中心,前后分别长windowSize个元素的的滑动窗口的元素下标数组     + 默认数组下标最小为0     """     window = [];     leftStart = (idx-windowSize)%arraySize;     rightEnd = (idx+windowSize)%arraySize;     for i in range(leftStart,leftStart + windowSize): # range(m,n) = [m,n)         window.append(i);         pass;     for i in range(rightEnd-windowSize+1,rightEnd+1):         window.append(i);         pass;     return window;  print(window(0,7,2)); 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!