读取存储在 HDF5 中的部分数据集 - python 2.7
Posted
技术标签:
【中文标题】读取存储在 HDF5 中的部分数据集 - python 2.7【英文标题】:Reading part of dataset stored i HDF5 - python 2.7 【发布时间】:2013-12-18 02:02:39 【问题描述】:我有一个相当大的 HDF5 文件,其中存储(除其他外)一个包含 150 名参与者的眼动追踪数据的大型时间序列数据集。
In [20]: f['data_collection/events/eyetracker/BinocularEyeSampleEvent/']
Out[21]: <HDF5 dataset "BinocularEyeSampleEvent": shape (8297323,), type "|V178">
我无法将所有这些都读入内存,因为它太大了,但是我如何才能读到其中的一部分呢?
我想做这样的事情 - 当时读取一个参与者(参与者的列名是“名称”),执行一些操作并保存到一个较小的数据框:
for name in f['data_collection/events/eyetracker/BinocularEyeSampleEvent/'][name]:
df = f['data_collection/events/eyetracker/BinocularEyeSampleEvent/']
...
...
我该怎么做?我正在使用 h5py 读取 HDF5 文件。
/马丁
【问题讨论】:
【参考方案1】:您的问题看起来像 Map Reduce 算法。由于您拥有庞大的数据集,因此您应该将数据转换为 map reduce 算法,该算法在 hadoop 集群上输出您关心的数据的键值对。这样您就可以处理大量数据。检查此链接以获取帮助:
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
Hadoop 也使用 HDFS,因此它可能会对您有所帮助。 Mapper 只操作您关心的数据并输出键、值,reducer 进行一些聚合。
【讨论】:
以上是关于读取存储在 HDF5 中的部分数据集 - python 2.7的主要内容,如果未能解决你的问题,请参考以下文章
在 Fortran 中读取 HDF5 数据集的子集时出现问题