仅存储'列' h5py中的数据无需加载整个数据文件

时间:2017-09-21 22:11:55

标签: python pandas h5py

我有一个相对较大的数据集(大约8GB),并使用h5py将其读入一个jupyter笔记本。

数据集的形状最终类似于(50000000,384)。我理想的数据集将这个转置,以便我可以查看每个列'在数据集中。我能够获得每个专栏的唯一方法是'是通过为每列索引(这是非常慢和CPU密集,因为它在50000000行中逐行)或将h5数据转换为np.array并转置 - 这也非常慢和无效。

例如,我有一个h5文件:

chunk_file = h5py.File(chunk_fil_1, "r")

chunk_file["ex_dat"]

输出:

HDF5 dataset "ex_dat": shape (50000000, 384)

如果我这样做:

len(chunk_file["ex_dat"][0])

输出:

384

这就是我希望我的输出能够全部出现在' 0'列。

是否有一种有效的方法可以为'列'索引h5文件?喜欢没有阅读每一行的数据?或者读取这个大数据集的其他选择?我的最终目标是存储个人专栏'进入熊猫数据框架。

1 个答案:

答案 0 :(得分:0)

因此chunk_file['ex_dat']是形状为numpy的{​​{1}}数组。使用整数对此进行索引会自动获取一行,这是预期的行为。要在(50000000, 384)数组中获取列而不是行,只需将其索引为

numpy

其中chunk_file['ex_dat'][:,0]是“所有行”,:是第一列。这与转置矩阵(0array.T)然后取第一行完全相同

numpy