gpt4 book ai didi

C++ - 在 HDF5 中设置列​​名

转载 作者:行者123 更新时间:2023-11-28 05:10:34 26 4
gpt4 key购买 nike

有没有办法,如何在h5文件中设置列名?

我可以使用复合数据类型来做到这一点,也可以使用 H5Table 来完成。 .

一种选择也是通过这种方式创建属性并保存列名。

但是通常的单一数据类型的矩阵不能有命名列,是吗?

最佳答案

据我所知,您不能在原子数据类型中设置列名。正如您所见,H5Table 的技巧在于它创建了一个复合数据类型,其中每个“列”都有一个字段。 LINK .

如果我是你,我会在属性(字符串数组)中写列名称并保持数据类型简单。

要在 C++ 中创建字符串列表,我会执行以下操作:

H5::H5File m_h5File;
m_h5File = H5File("MyH5File.h5", H5F_ACC_RDWR);
DataSet theDataSet = m_h5File.openDataSet("/channel001");
H5Object * myObject = &theDataSet;

//The data of the attribute.
vector<string> att_vector;
att_vector.push_back("ColName1");
att_vector.push_back("ColName2 more characters");
att_vector.push_back("ColName3");
const int RANK = 1;
hsize_t dims[RANK];
StrType str_type(PredType::C_S1, H5T_VARIABLE);
dims[0] = att_vector.size(); //The attribute will have 3 strings
DataSpace att_datspc(RANK, dims);
Attribute att(myObject->createAttribute("Column_Names" , str_type, att_datspc));

vector<const char *> cStrArray;
for(int index = 0; index < att_vector.size(); ++index)
{
cStrArray.push_back(att_vector[index].c_str());
}
//att_vector must not change
att.write(str_type, (void*)&cStrArray[0]);

关于C++ - 在 HDF5 中设置列​​名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591659/

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