我有一个以制表符分隔的.txt文件,用于存储矩阵形式的数字。文件的行数为904,652,列数为26,600(以制表符分隔)。文件总大小约为48 GB。我需要将这个文件加载为矩阵,并对矩阵进行转置以提取训练和测试数据。我使用的是Python、pandas和sklearn
包。尽管我有一台500GB内存的服务器,但使用pandas包加载文件的内存仍然不足。谁能帮我解决这个问题?
加载代码部分如下:
def open_with_pandas_read_csv(filename): df = pandas.read_csv(filename, sep=csv_delimiter, header=None) data = df.values return data
回答:
我在stackoverflow上找到了一个解决方案(我相信还有更有效和更合理的方案)。np.fromfile()
方法比np.loadtxt()
、np.genfromtxt()
甚至pandas.read_csv()
更高效地加载大型文件。未经任何修改或压缩,仅用了大约274 GB的内存。我感谢所有尝试帮助我解决这个问题的朋友们。