我有一个非常大的csv文件(11百万行)。
我想创建批量数据。我不能为我的生活弄清楚如何在生成器中读取n行(我指定n是什么,有时我希望它是50,有时2)。我想出了一个可以工作一次的kluge,但我无法让它再次迭代。发电机对我来说是一个新手,所以我甚至花了一些时间来打电话。 (对于记录,这是一个干净的数据集,每行有29个值)
import numpy as np
import csv
def getData(filename):
with open(filename, "r") as csv1:
reader1 = csv.reader(csv1)
for row1 in reader1:
yield row1
def make_b(size, file):
gen = getData(file)
data=np.zeros((size,29))
for i in range(size):
data[i,:] = next(gen)
yield data[:,0],data[:,1:]
test=make_b(4,"myfile.csv")
next(test)
next(test)
这样做的原因是使用在keras中批量处理数据的示例。虽然可以使用不同的方法将所有数据存入内存,但我正在尝试向学生介绍从大型数据集批量处理数据的概念。由于这是一个调查课程,我想展示来自大型文本文件的数据批处理,这对于这样的“入门级”任务来说已经证明是令人沮丧的。 (它实际上在tensorflow中更容易,但我使用keras来介绍MLP的高级概念)。