Прежде всего, я прочитал тему «Самый быстрый способ записи файла hdf5 с Python?", но это не очень помогло.
Я пытаюсь загрузить файл размером около 1 ГБ (матрица размером (70133351,1)) в структуре h5f5.
Довольно простой код, но медленный.
import h5py
f = h5py.File("8.hdf5", "w")
dset = f.create_dataset("8", (70133351,1))
myfile=open("8.txt")
for line in myfile:
line=line.split("\t")
dset[line[1]]=line[0]
myfile.close()
f.close()
У меня есть уменьшенная версия матрицы с 50 МБ, и я пробовал тот же код, и он не был завершен через 24 часа.
Я знаю способ сделать это быстрее, чтобы избежать "цикла for". Если бы я использовал обычный Python, я бы использовал хэш-понимание. Однако, похоже, он здесь не подходит.
Я могу запросить файл позже:
f = h5py.File("8.hdf5")
h=f['8']
print 'GFXVG' in h.attrs
Что ответило бы мне «Верно», учитывая, что GFXVG находится на ключах в h
У кого-нибудь есть идеи?
Пример части файла:
508 LREGASKW
592 SVFKINKS
1151 LGHWTVSP
131 EAGQIISE
198 ELDDSARE
344 SQAVAVAN
336 ELDDSARF
592 SVFKINKL
638 SVFKINKI
107 PRTGAGQH
107 PRTGAAAA
Спасибо
int
- person daniel   schedule 26.06.2014str
вint
, чтобы вы могли индексировать набор данных. - person daniel   schedule 26.06.2014f = h5py.File("8.hdf5") h=f['8'] print 'GFXVG' in h.attrs f.close()
- person user3780518   schedule 27.06.2014h.attrs
будет словарем, но не рекомендуется использоватьattrs
в качестве набора данных. Наборы данных в hdf5 можно рассматривать как массивы numpy, и я думаю, что в текущем подходе есть фундаментальная проблема. То, что он работает для вашего теста, не означает, что он гарантированно сработает. - person daniel   schedule 27.06.2014