我需要编写一个 Python 生成器来生成来自两个不同 CSV 文件的元组 (X, Y)。
它应该在初始化时接收一个批处理大小,从两个 CSV 中逐行读取,为每一行生成一个元组 (X, Y),其中 X 和 Y 是数组(CSV 文件的列)。
我看过懒惰阅读的例子,但我发现很难将它们转换为 CSV:
- Lazy Method for Reading Big File in Python?
- Read large text files in Python, line by line without loading it in to memory
另外,不幸的是,在这种情况下 Pandas Dataframes 不是一个选项。
我可以从任何片段开始吗?
谢谢
最佳答案
你可以有一个生成器,它从两个不同的 csv 阅读器读取行并将它们的行作为数组对生成。代码是:
import csv
import numpy as np
def getData(filename1, filename2):
with open(filename1, "rb") as csv1, open(filename2, "rb") as csv2:
reader1 = csv.reader(csv1)
reader2 = csv.reader(csv2)
for row1, row2 in zip(reader1, reader2):
yield (np.array(row1, dtype=np.float),
np.array(row2, dtype=np.float))
# This will give arrays of floats, for other types change dtype
for tup in getData("file1", "file2"):
print(tup)
关于用于读取大型 CSV 文件的 Python 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584494/