【发布时间】:2015-06-17 22:07:56
【问题描述】:
如何将包含二进制值字符(0 和 1)的巨大文本文件 (>16G) 转换为 numpy 数组文件,而不会炸毁 python 中的内存?假设我们在机器上有足够的存储空间,但没有足够的 RAM 用于转换。
样本数据:
0,0,0,0,0,1,0,0,0
1,0,0,1,0,0,0,0,0
...
示例代码:
converted_data = [ map(int,line.split(',')) for line in f ]
【问题讨论】:
-
“二进制值字符串”是什么意思?现有文件的确切格式是什么?根据现有格式,您也许可以使用内存映射数组做一些事情。
-
这是一个很好的话题,但没有足够的信息来提供有用的答案。您可以发布可以读取较小文件的代码吗?如果做不到,请提供文件格式等详细信息。
-
测试文件包含“0”和“1”字符,用逗号隔开。
-
这是我用来进行转换的示例代码:
-
您是否对导入过程的内存消耗感兴趣(可以通过串行读取和转换数据而不是一次读取所有数据来减少)或
converted_data的占用空间(将> 1G,除非你可以利用稀疏结构)?