c# - 如何在 HDF5DotNet 中创建 2D H5Array

标签 c# hdf5

我正在研究使用 HDF5 与 C# 和 Matlab/Octave 进行数据存储。我现在有一个相当基本的问题...我可以在 h5 文件中创建并保存一维数据集,但无法理解 2D 数据集的代码:

我的二维矩阵(来自列表列表)

List<List<int>> table = new List<List<int>>();
        List<int> row;
        for (int a=1;a<13;a++)
        {
            row = new List<int>();
            for (int b=1;b<13;b++)
                row.Add(a*b);
            table.Add(row);
        }
// Require an array containing dimensions of array to store.  
            long[] dims = new long[2];
            dims[0] = table.Count;
            dims[1]=table[0].Count;

            int[][] arrays = table.Select(a => a.ToArray()).ToArray();

到目前为止一切顺利。现在,创建 HDF5 文件...

H5DataSpaceId spaceId = H5S.create_simple(1, dims);
H5DataTypeId typeId = H5T.copy(H5T.H5Type.NATIVE_INT);
H5DataSetId dset = H5D.create(h5fileid, "TimesTables", typeId, spaceId);

现在,我成功地将以下行用于一维数组,但我找不到二维数组的语法...

H5D.write(dset,typeId,new H5Array<int>(arrays));

我的第二个问题是如何创建群组以及群组的群组?到目前为止,我还没有开始从事这方面的工作,但在我继续从事第一部分工作的同时,我希望有一个起点!!

最佳答案

我发现,如果您使用 data[a,b] 表示法而不是 data[a][b] 表示法在 C# 中定义数据集,则 H5D.write() 调用就像编写的那样工作。所以,

var mydata = new int[100,100];   // int[100][100] doesn't work
...
H5D.write(dset,typeId,new H5Array<int>(mydata));

关于c# - 如何在 HDF5DotNet 中创建 2D H5Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191735/

相关文章:

c# - 其中 t : multiple classes

python - 将通过 pandas/pytables 编写的大型 hdf5 数据集转换为 vaex

python - 是否可以从保存的 CNN 中提取分配给训练图像的类概率?

c# - 自动计算TextBox的值

python - 将用-v7.3(HDF5)保存的Matlab稀疏矩阵加载到Python中并对其进行操作

hdf5 -\[错误-101\] NetCDF : HDF error when opening netcdf file

python - Pandas 和 HDF5 中的文件大小减小

c# - WCF 与 SOAP HTTPS 和双工绑定(bind)

c# - 使用 EditorFor 和 LabelFor 重构呈现不同属性的类似 CHTML

c# - Windows 服务中的程序集未引用错误