【发布时间】:2020-04-10 08:07:45
【问题描述】:
我正在尝试使用 Python 在 csv 文件的行上实现滑动/移动窗口方法。每行可以有一个二进制值yes 或no 的列。基本上,我想要罕见的yes 噪音。这意味着如果说我们有 3 yes 行在 5 个窗口中(最多 5 个),请保留它们。但是如果有 1 或 2 个,让我们将它们更改为 no。我该怎么做?
例如,下面的yes 应该都变成no。
...
1,a1,b1,no,0.75
2,a2,b2,no,0.45
3,a3,b3,yes,0.98
4,a4,b4,yes,0.22
5,a5,b5,no,0.46
6,a6,b6,no,0.20
...
但在下面,我们保持原样(可以有 5 个窗口,其中 3 个是 yes):
...
1,a1,b1,no,0.75
2,a2,b2,no,0.45
3,a3,b3,yes,0.98
4,a4,b4,yes,0.22
5,a5,b5,no,0.46
6,a6,b6,yes,0.20
...
我尝试写一些东西,窗口为 5,但卡住了(不完整):
window_size = 5
filename='C:\\Users\\username\\v3\\And-'+v3file.split("\\")[5]
with open(filename) as fin:
with open('C:\\Users\\username\\v4\\And2-'+v3file.split("\\")[5],'w') as finalout:
line= fin.readline()
index = 0
sequence= []
accs=[]
while line:
print(line)
for i in range(window_size):
line = fin.readline()
sequence.append(line)
index = index + 1
fin.seek(index)
【问题讨论】:
-
您是否正在尝试解决,将最近的三行保留为变量/窗口?
-
@wwii 实际上让我们说最大超出 5 个窗口(3 是不一定需要全部按顺序排列)。稍微更新了问题。
-
文件很大吗?一次读取一行文件重要吗?如果你将整个文件读入内存,你的问题会变得更容易,代码也会变得更干净,你不必做
fin.seek之类的事情 -
能否提供更完整的示例,以及后续输出应该是什么样子?
-
@vasia 文件最大可达 10MB。但是,如果您认为它适合记忆,那很好。
标签: python python-3.x moving-average sliding-window file-traversal