<HDF5 dataset "name": shape (), type "|f8">在Python中

问题描述 投票:0回答:1
>>>fSM = h5py.File(filenames, 'r')
>>>fSM.keys()
<KeysViewHDF5 [Frequency', 'cycle']>

>>>fSM['Frequency']
<HDF5 dataset "baseFrequency": shape (), type "<f8">

>>>fSM['acquisition']['drivefield']['baseFrequency']._is_empty
False

,‘shape()’是什么意思?空白的?并且,如何正确获取特定键的某些值?谢谢!!!

HDF5 在 Python 中使用

hdf5
1个回答
0
投票

你读过h5py文档吗? HDF5 使用组和数据集来组织数据。组就像文件夹,数据集就像数据文件。

  • h5py 对组对象使用字典语法。所以,
    keys()
    给出 组中对象的名称。
  • h5py 将 NumPy 数组语法与数据集对象结合使用。所以,
    shape
    就是 数据集的形状。

这就是您的代码的作用:

  • fSM.keys()
    打印根级别对象(可以是组或 数据集)。
  • fSM['Frequency']
    打印“频率”对象属性。它是一个 浮点值的数据集。然而,基于
    shape ()
    ,它具有未定义的形状(并且没有数据值)。 (对我来说)很奇怪的是,当数据集名称被命名为“Frequency”时,它会将数据集名称打印为“baseFrequency”。这需要一些诊断(假设这不是您帖子中的拼写错误。
  • fSM['acquisition']['drivefield']['baseFrequency']._is_empty
    引用组中名为“baseFrequency”的数据集 “drivefield”是“acquisition”组下的一个组。
    ._is_empty
    检查它是否为空。
    False
    值表示不为空。
  • 最后一点:第一行的输出与 最后一行。第一行仅显示名为“Frequency”和“cycle”的对象,最后一行引用名为“acquisition”的根级别组。我怀疑您的帖子中缺少代码段。或者,您正在混合多个文件的输出。

开始编码之前,您需要了解文件架构(组和数据集)。最简单的方法(对于新用户)是使用 HDF Group 中的 HDFView 实用程序 打开文件。这样你就可以“看到”文件结构。否则,您需要编写一些代码来检查架构。

© www.soinside.com 2019 - 2024. All rights reserved.