Чтение набора данных HDF5 нескольких типов данных - PullRequest
0 голосов
/ 11 марта 2019

У меня есть набор данных файла HDF5, который содержит разные типы данных (int и float).

При чтении в массиве numpy он обнаруживает его как массив типа np.void.

import numpy as np
import h5py

f = h5py.File('Sample.h5', 'r')
array = np.array(f['/Group1/Dataset'])
print(array.dtype)

Изображение типов данных {print (array.dtype)}

Как я могу прочитать этот набор данных в массивы с каждым столбцом того же типа данных, что и для ввода? Заранее спасибо за ответ

1 Ответ

0 голосов
/ 11 марта 2019

Вот два простых примера, показывающих оба способа нарезки подмножества набора данных с использованием имен полей / столбцов HDF5.

Первый метод извлекает подмножество данных в массив записей путем разрезания при доступе к набору данных. Второй метод следует вашему текущему методу. Он извлекает весь набор данных в массив записей, а затем нарезает новое представление для доступа к подмножеству данных.

Операторы печати используются широко, чтобы вы могли видеть, что происходит.

Метод 1

real_array= np.array(f['/Group1/Dataset'][:,'XR','YR','ZR'])
print(real_array.dtype)
print(real_array.shape)

Метод 2

cmplx_array = np.array(f['/Group1/Dataset'])
print(cmplx_array.dtype)
print(cmplx_array.shape)

disp_real = cmplx_array[['XR','YR','ZR']]
print(disp_real.dtype)
print(disp_real.shape)

Просмотрите этот раздел SO, чтобы узнать, как копировать значения из массива в ndarray и обратно.

копия-NumPy-recarray к ndarray

...