【问题标题】:write HDF h5 dataset (via h5py) which is a mix of string and numpy list编写 HDF h5 数据集(通过 h5py),它是字符串和 numpy 列表的混合
【发布时间】:2020-11-18 01:43:21
【问题描述】:

我有以下两个数据集(我有几个 tuples):

filename_string: "something"
filename_list: [1,2,3,4,5] # this is a numpy array.

我想知道如何通过 h5py 以紧凑的格式编写它。目标是让最终用户读取这个 h5 数据文件并能够推断出列表及其对应的文件名。

我能够有效地将 numpy 列表写入 h5,但字符串似乎是一个大问题,并且当我包含它时会出错。

任何帮助都会很棒 - 浪费了几个小时寻找解决方案!

【问题讨论】:

  • 我可以想象将dataset 命名为“某物”。或者将filename_string 分配为数据集的属性。
  • 通常当人们遇到错误时,我们希望看到问题代码和完整的错误消息。帮助解决特定问题通常比提出发布者可能已经尝试过的全新方法更容易。
  • 同上“分享你的代码”。你是怎么写字符串的?作为属性?或在具有字符串 dtype 的数组或记录数组中(字段 dtype 是字符串)?

标签: python hdf5 h5py


【解决方案1】:

这一小段代码将创建一个名为 something(来自变量 filename_string)的数据集,其中包含列表中的数据 filename_list

import h5py
filename_string= "something"
filename_list= [1,2,3,4,5]

with h5py.File('SO_63137136.h5','w') as h5f:
    h5f.create_dataset(filename_string, data=filename_list)

【讨论】:

  • 是的,这就是我最终所做的;ly.. 我最初是在尝试一个更难的挑战:在 HD5 中编写一个看起来像这样的元组:` ("the_string", [the_list_elements])` 无论如何,这似乎是不可能的。感谢您的回答!
  • 如果你重新组织你的数据,你可以把它写成一个 HDF5 数据集。 HDF5 支持数据集中的混合数据类型(作为 NumPy 重新数组)。这假设保存“the_string”的字段可以是固定的字符串长度,并且 [the_list_elements] 可以转换为 NumPy 数组(常见的 dtype:int、float 或 string)。
猜你喜欢
  • 2016-01-19
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2016-10-18
  • 2017-12-29
相关资源
最近更新 更多