我有一个相对较大的数据集(大约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文件?喜欢没有阅读每一行的数据?或者读取这个大数据集的其他选择?我的最终目标是存储个人专栏'进入熊猫数据框架。
答案 0 :(得分:0)
因此chunk_file['ex_dat']
是形状为numpy
的{{1}}数组。使用整数对此进行索引会自动获取一行,这是预期的行为。要在(50000000, 384)
数组中获取列而不是行,只需将其索引为
numpy
其中chunk_file['ex_dat'][:,0]
是“所有行”,:
是第一列。这与转置矩阵(0
和array.T
)然后取第一行完全相同
numpy