gpt4 book ai didi

python - 将分层数据存储到 hdf5 - 如何构建它们

转载 作者:太空宇宙 更新时间:2023-11-04 06:16:22 25 4
gpt4 key购买 nike

我需要将分层数据结构存储到 hdf5 中,其中大部分叶节点是非数组类型(字符串或标量),其中只有少数是同构数组。这些数据看起来类似于:

/simulation-20130312_13:33p1435
+- input
| +- gravity = 9.81
| +- timeScale = 1.0
| +- userTitle = 'real'
| +- flowRates = [ 1.1, 2.1 ]
| +- material
| +- density = 1234.2
| +- young = 1.123e6
| +- temp = 290.2
+- finished = '20130312_16:21'
+- host = 'efflux.local'
+- series
+- t = [0,1e-5,2e-5,...,3.4e-4]
+- Ek = [0,...]
/simulation-20130312_13:55p1657
...
...

每个模拟下的数据结构相似,但不一定完全相同,所以我认为使用表格是不可能的。

我是否应该为所有叶子创建组,并始终将值设置为附加到该叶子的数组 - 如果该值为标量,则使用 1x1 数组?我应该对除实际数组之外的所有数据使用组属性吗?这不会让使用这些文件的人感到困惑吗?

我几乎没有使用 hdf5 的经验;数据量会比较少,此时效率不用太担心——重要的是能够很容易地将数据导入到Matlab中。

最佳答案

HDF5 代表层次数据格式,它显然是存储像您这样的层次结构的正确工具。

我建议您将叶子存储为数据集:

  • 对标量使用标量数据集(字符串、数字、flowRates 也可以被认为是大小为 2 的数组 类型的标量)

    <
  • 为时间序列使用简单的数据集

并为所有其他节点创建组,如下所示:

/simulation-20130312_13:33p1435       # root group: /
+- input # group: /input
| +- gravity = 9.81 # scalar double
| +- timeScale = 1.0 # scalar double
| +- userTitle = 'real' # scalar string
| +- flowRates = [ 1.1, 2.1 ] # scalar array[2]
| +- material # group: /input/material
| +- density = 1234.2 # scalar double
| +- young = 1.123e6 # scalar double
| +- temp = 290.2 # scalar double
+- finished = '20130312_16:21' # scalar string
+- host = 'efflux.local' # scalar string
+- series # group: /series
+- t = [0,1e-5,2e-5,...,3.4e-4] # simple dataset double
+- Ek = [0,...] # simple dataset double

在 Matlab 中导入应该是小菜一碟。

关于python - 将分层数据存储到 hdf5 - 如何构建它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15365807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com