在python中重叠滑动窗口

时间:2018-06-29 06:27:33

标签: python python-3.x jupyter-notebook

我编写了以下代码,以便在python中创建“重叠滑动窗口”,并在每个窗口中进行一些计算。但是我没有得到正确的输出。

我正在使用Jupyter Notebook。

首先,我将文本文件存储在列表中。然后计算每个窗口中C和G的总数。窗口大小= 50kb,增量= 10kb。 问题在于该代码仅提供5个窗口的输出,其余窗口的输出为0。那么我是否在重叠滑动窗口或计数的代码中犯了任何错误?

char = []
with open('xyz.txt') as f:
   for line in f:
     line = line.strip()
     for ch in line:
        char.append(ch)

w_s = 50000 #window size
inc = 10000 #increment
x = 4215606
now = 1 #no. of windows
no_of_C = []
no_of_G = []
i = 0
for i in range (0,len(char)-w_s,i + inc):

  nC = 0
  nG = 0

  for j in range(i,w_s):
     if char[j] == 'C':
         nC = nC + 1
     elif char[j] == 'G':
         nG = nG + 1
  a = no_of_C.append(nC)
  b = no_of_G.append(nG)
  print(no_of_C)
  print(no_of_G)

我编写此代码时没有使用任何库,但是还有其他方法可以在python中创建重叠的滑动窗口吗?

1 个答案:

答案 0 :(得分:0)

已编辑答案。谢谢索纳里。

for j in range(i,w_s): 因为您要进行从i到w_s的for循环,并且经过几次迭代并将w_s设置为50000,所以i为50000以上,因此从迭代5开始,此for循环将不会运行任何内容。 :)

解决方案 我相信,如果您将行更改为:

for j in range(i, i + w_s):

然后,您应该得到想要的结果。 :)