ILNumerics HDF5 API을 학습하십시오. C# 개체 초기화 프로그램을 사용하여 하나의 식에서 복잡한 HDF5 파일을 설정하는 옵션을 정말 좋아합니다. HDF5 파일의 특정 개체를 필터링하는 방법
using (var f = new H5File("myFile.h5")) {
f.Add(new H5Group("myTopNode") {
new H5Dataset("dsNo1", ILMath.vec<float>(1,200)), // no attributes
new H5Group("myGroup") {
new H5Dataset("dsYes", ILMath.rand(100,200)) { // matching dataset
Attributes = {
{ "att1", 1 },
{ "att2", 2 }
}
},
new H5Dataset("dsNo2") { // attributes but wrong name
Attributes = {
{ "wrong1", -100 },
{ "wrong2", -200 }
}
}
}
});
}
가 지금은 특정 속성을 가진 데이터 세트에 대한 파일 및 필터를 반복하는 영리한 방법을 찾고 있어요 : 나는 다음과 같은 파일을 만들었습니다.
이름에 "att"가 포함 된 속성이 하나 이상있는 모든 데이터 집합을 찾고 해당 내용을 수집하고 반환하고자합니다. 이것은 내가 지금까지 만든 것입니다 :
IList<ILArray<double>> list = new List<ILArray<double>>();
using (var f = new H5File("myFile.h5")) {
var groups = f.Groups;
foreach (var g in groups) {
foreach (var obj in g) {
if (obj.H5Type == H5ObjectTypes.Dataset && obj.Name.Contains("ds")) {
var ds = obj as H5Dataset;
// look for attributes
foreach (var att in ds.Attributes) {
//ds.Attributes["att"].
if (att.Name.Contains("att")) {
list.Add(ds.Get<double>());
}
}
}
}
}
}
return list;
를하지만 재귀 적으로 작동하지 않습니다. 그것을 채택 할 수는 있지만 ILNumerics는 편리하다고 주장하므로 더 좋은 방법이 있어야합니까? 파이썬에서 h5py와 비슷한 점이 있나요?