gpt4 book ai didi

c++ - 从 HDF5 文件读取 : 3D data into 1D vector in memory

转载 作者:行者123 更新时间:2023-11-30 05:28:31 25 4
gpt4 key购买 nike

是否可以使用特定的内存空间布局将 HDF5 文件中的 3D 数组读入 C++ 中的 1D 数组/vector ?

我试过:

H5File file(file_name, H5F_ACC_RDONLY);
DataSet dataset = file.openDataSet(dataset_name);
DataSpace dataspace = dataset.getSpace();
hsize_t dim[3];
dataspace.getSimpleExtentDims(dim, NULL);

hsize_t memdim[1];
memdim[0] = dim[0] * dim[1] * dim[2];
DataSpace memspace(1, memdim);

vector<float> data_out(memdim[0]);
// set the memory layout to 1D
dataset.read(data_out.data(), PredType::NATIVE_FLOAT, memspace, dataspace);

但是 vector 没有正确填充。我认为可能有默认映射。也许没有?如何指定一个?

最佳答案

事实证明,问题是即使您读入一维数组,您仍然将 3D 数据空间传递给 datasetread 方法。

H5File file(file_name, H5F_ACC_RDONLY);
DataSet dataset = file.openDataSet(dataset_name);
DataSpace dataspace = dataset.getSpace();
hsize_t dim[3];
dataspace.getSimpleExtentDims(dim, NULL);

hsize_t memdim = dim[0] * dim[1] * dim[2];;

vector<float> data_out(memdim);
//use the same layout for file and memory
dataset.read(data_out.data(), PredType::NATIVE_FLOAT, dataspace, dataspace);

关于c++ - 从 HDF5 文件读取 : 3D data into 1D vector in memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800493/

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