#python #numpy #hdf5 #h5py #pytables
Вопрос:
Я загрузил файл HDF5 из магазина Pandas и ввел их все как np.float64 со следующим кодом:
dtypes = np.dtype([('methane_emission', np.float64),
('no2_emission', np.float64), ('co2_emission', np.float64)])
for i in range(len(ccodes)):
ccode = ccodes[i]
df = store.get(ccode)
df = df.drop(columns='year')
dset = f1.create_dataset(ccode, data=df.astype(dtypes))
Затем следующий код выдает мне следующую ошибку.
f1 = h5py.File('file.h5', 'r')
a = np.array(f1['xxx']).flatten()
a.astype(np.float64).sum(axis=0)
Не удается привести данные массива из dtype([(‘methane_emission’, ‘<f8’), (‘no2_emission’, ‘<f8’), (‘co2_emission’, ‘
Комментарии:
1. Похоже на
structured
массив. Смотрите соответствующую страницу документов numpy.2. numpy.org/doc/stable/user/…
3. Составные наборы данных HDF5 возвращаются в виде повторных снимков. Чтобы получить доступ к каждому полю(столбцу), необходимо указать имя набора данных и имя поля. Вот 1 способ сделать это:
arr = f1[ccode]['methane_emission'][:]
;arr.sum()
; затем повторите для «no2_emission» и «co2_emission». (Я использовалccode
b/c, я не был уверен, что ваше'xxx'
имя на самом деле является именем набора данных.) Я думаю, что вы также можете сделать это:arr = f1[ccode][:]
;arr['methane_emission'].sum()
; затем повторите для остальных 2.