内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
考虑到大量(10秒GB)混合文本/数字的CSV文件,在保持内存使用合理的同时,创建具有相同内容的hdf 5文件的最快方法是什么?我想用h5py
模块。
在下面的示例中,我发现了一种非常慢、非常快的方式来将数据写入hdf 5。用10000行左右的块写入hdf 5是否是最佳实践?还是有更好的方法将大量数据写入这样的文件?
import h5py n = 10000000 f = h5py.File('foo.h5','w') dset = f.create_dataset('int',(n,),'i') # this is terribly slow for i in xrange(n): dset[i] = i # instantaneous dset[...] = 42
还可以找到一种方法来读取CSV文件块,以避免将整个文件加载到磁盘。然后使用recArray(或其中的片)将整个(或其中的大块)写入h5py数据集。
尝试一次编写大量数据,而不是迭代单个元素。
读取CSV文件的另一种可能是numpy.genfromtxt
可以使用关键字获取想要的列usecols
,然后通过正确设置skip_header
和skip_footer
关键词。