gpt4 book ai didi

c++ - 如何读取存储在 HDF5 中的 ArrayType 的一个组件

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:53 27 4
gpt4 key购买 nike

我有一个 HDF5 数据集,它是使用 H5::ArrayTypedouble[3] 编写的。 DataSpace 是一维的 (rank=1),具有 ndat 条目(每个类型都是 double[3] ).

现在我只想将每个 double[3] 的第二个读取到 double 的一维缓冲区中。我该怎么做?

相反,如果 DataSpace 是维度为 {ndat,3} 的二维,我可以简单地使用 hyper slab 选择方法在第二个中挑选出中间元素方面。我也可以在这里做吗?怎么办?

我对 C 或 C++ 的答案很满意。

最佳答案

好的,所以我对此进行了试验,发现这是不可能的,我认为这是HDF5 的限制。本质上,HDF5 将数据类型视为基本类型,不会将它们分解。因此,对于 HDF5 std::array<double,3>H5::ArrayType 写的和 double[3]H5::PredType::NATIVE_DOUBLE 写的根本不同:前者不能读入后者,反之亦然。

因此唯一的解决方案是避免使用 H5::ArrayType 并改用多维数据空间。

关于c++ - 如何读取存储在 HDF5 中的 ArrayType 的一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898010/

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