У меня есть файл HDF5 с 20 наборами данных, каждый из которых содержит 200 строк сложного dtype ('<r4', '<r4', '<i4')
, где каждый компонент dtype представляет собой одномерную переменную. Я нахожу, что для открытия каждого файла требуется около 2 секунд и назначить компонент столбца своей переменной, что кажется мне очень медленным. Я использую h5py и NumPy, чтобы открыть и прочитать из файла в Numpy массивы:Что такое быстрый способ в Python читать массивы HDF5 dtype?
import numpy as np
import h5py
...
f = h5py.File("foo.hdf5", "r")
set1 = f["foo/bar"]
var1 = np.asarray([row[0] for row in set1])
var2 = np.asarray([row[1] for row in set1])
var3 = np.asarray([row[2] for row in set1])
Есть ли более быстрый способ извлечь переменные из этих наборов данных?
Вот скриншот одного из наборов данных с использованием hdfview:
Вы пробовали 'var1 = set1 [:, 0]'? Если 'set1' является« набором данных », вы можете индексировать его почти так же (и) в виде массива numpy. http://docs.h5py.org/en/latest/high/dataset.html – hpaulj
Да, и я получаю сообщение об ошибке «TypeError: Argument sequence too long». Кроме того, если я попробую 'set1 = f [" foo/bar "] [...]', за которым следует 'var1 = set1 [:, 0]' I receive "IndexError: слишком много индексов для массива" – DavidH
Что такое 'set1 .shape'? Была ли первая 'set1'' группа', а не 'dataset'? Я не знаю структуру данных в вашем файле. Вы должны сами это изучить. – hpaulj