У меня есть проблема, для которой я нашел неэлегантное решение, и хочу знать, есть ли лучший способ сделать это. (Использование python 3.6)
Я хочу сохранить набор результатов экспериментов в разных группах файла .hdf5
. Но затем я хочу иметь возможность открывать файл, перебирать все группы и получать наборы данных только из групп определенного типа c.
Неэлегантное решение, которое я нашел, - сохранить информацию, чтобы различать guish группы в имени группы. Например, 01
в "ExpA01"
.
Код для создания файла:
import h5py
import numpy as np
if __name__ == "__main__":
# name of the file
FileName = "myFile.hdf5"
# open the file
myFile = h5py.File(FileName, 'w')
# list of groups
NameList = ["ExpA01", "ExpA02", "ExpB01", "ExpB02"]
for name in NameList:
# create new group with the name from the nameList
myFile.create_group(name)
# create random data
dataset = np.random.randint(0, 10, 10)
# add data set to the group
myFile[name].create_dataset("x", data=dataset)
myFile.close() # close the file
Теперь я хочу читать только данные из групп, которые заканчиваются на "01"
. Для этого я в основном читаю информацию из названия группы myFile[k].name.split("/")[-1][-2::] == "01"
.
Код для чтения файла:
import h5py
import numpy as np
if __name__ == "__main__":
FileName = "myFile.hdf5"
# open the file
myFile = h5py.File(FileName, 'r')
for k in myFile.keys(): # loop over all groups
if (myFile[k].name.split("/")[-1][-2::] == "01"):
data = np.zeros(myFile[k]["x"].shape)
myFile[k]["x"].read_direct(data)
print(data)
myFile.close()
Короче говоря, запись отличительной информации в имя группы и последующее разрезание строки - уродливое решение.
Что такое лучший способ сделать это?
Спасибо за чтение.