HDF5サンプルコードで同様の質問を見つけました
が、hdf5データセットの内容を正しく表示できません。
私が見ているデータセットには、最初の列に文字列があり、他の列には2倍の文字列ヘッダーが含まれています。
私のコードは次のようになります。
public static void readh5(string path, string filename)
{
H5.Open();
var fileID = H5F.open(path + filename, H5F.OpenMode.ACC_RDONLY);
var groupID = H5G.open(fileID, "/Example Group/");
var datasetID = H5D.open(groupID, "Events");
var dataSpace = H5D.getSpace(datasetID);
var size = H5S.getSimpleExtentDims(dataSpace);
var dataType = H5D.getType(datasetID);
double[,] dataArray = new double[size[0],11];
var wrapArray = new H5Array<double>(dataArray);
H5D.read(datasetID, dataType, wrapArray);
Console.WriteLine(wrapArray);
}
デバッグしてwrapArrayを調べると、各要素の値が10^300から10^-300までの非常に大きいまたは小さい倍であり、その理由はわかりません。それらは要素のID番号ではないと思います。wrapArrayとdataArrayのデータ型をオブジェクトに変更しようとしましたが、それでもデータセットの正確な内容がわかりません。
wrapArrayに対して取得する出力は次のようになります。
[0,0] 4.0633928641260729E+87
[0,1] 9.77854726248995E-320
[0,2] 1.52021104712121E-312
等
しかし、私が欲しいのは:
[0,0] Event1
[0,1] 2
[0,2] 56
等
データセットを読み込んだ後、最初の列をループして特定の文字列を見つけ、他の列の対応する要素を取得します。しかし、私はこれを理解する必要があります。