我是编码新手,我想知道是否可以使用 python 读取 hdf5 文件。更具体地说,我希望访问列(按名称)以提取信息。
我已经使用标准 pandas 方法读取了 h5 文件,如下所示:pd.read_hdf('file_path.h5')
以上不适用于我的 hdf5 文件。现在,我正在使用模块:h5py 来加载它,如下所示:
import h5py
df = h5py.File('filename.hdf5', "r")
现在我不太确定如何阅读特定专栏。数据集中的每一列都有一个名称,例如:年龄、距离(等等)
这是我的第一个问题,所以我很高兴提供有关我的问题的更多信息:)
你看过h5py文档吗?这非常有帮助。 Stack Overflow 上也有几个很好的答案。读取 HDF5 文件非常简单(特别是如果您熟悉 NumPy 数组)。
数组的数据类型与数据集匹配。如果数据集是同质的,它的行为就像一个 ndarray。
根据您对“列”名称的引用,听起来您拥有异构数据集。它们的处理方式类似于 NumPy 结构化数组,其中数据类型由元组列表定义,如下所示
('field name', dtype)
;每个字段/列一个。
我扩展了您的示例以帮助您入门。 (注意:代码中的
df
是一个h5py文件对象——它不是一个数据集!)
import h5py
with h5py.File('filename.hdf5', "r") as h5f:
# this creates a dataset object:
dataset = h5f[dataset name here]
# to get the dtype and shape
print(dataset.dtype, dataset.shape)
# adding [()] reads the entire dataset into an array:
dataset_as_array = h5f[dataset name here][()]
# this extracts a field/column of data from that dataset
col_array = h5f[dataset name here][column name here] # uses the h5py file object
# OR
col_array = dataset[column name here] # uses the dataset object
在上面的代码中,
dataset
和h5f[dataset name here]
都引用数据集并且可以互换。