【发布时间】:2021-05-03 13:06:34
【问题描述】:
一直在尝试读取 .hdf5 文件以便绘制一些数据,为此我想我会将 .hdf5 文件中的数据处理成 .txt 文件。为了检查数据,我最终使用了reading nested .h5 group into numpy array 中提供的代码。
import numpy as np
import h5py
f = h5py.File('15524.h5', 'r')
list(f.keys())
dset = f['Measurement_15524']
def traverse_datasets(hdf_file):
def h5py_dataset_iterator(g, prefix=''):
for key in g.keys():
item = g[key]
path = f'{prefix}/{key}'
if isinstance(item, h5py.Dataset): # test for dataset
yield (path, item)
elif isinstance(item, h5py.Group): # test for group (go down)
yield from h5py_dataset_iterator(item, path)
for path, _ in h5py_dataset_iterator(hdf_file):
yield path
with h5py.File('15524.h5', 'r') as f:
for dset in traverse_datasets(f):
print('Path:', dset)
print('Shape:', f[dset].shape)
print('Data type:', f[dset].dtype)
这导致以下输出:
Path: /Measurement_15524/Waveforms/waveforms_0
Shape: (200,)
Data type: [('digital_in', '<i4'), ('encoder_phi', '<f4'), ('encoder_theta', '<f4'), ('encoder_x',
'<f4'), ('encoder_y', '<f4'), ('encoder_z', '<f4'), ('id', '<i8'), ('line_index', '<i4'),
('motor_phi', '<f4'), ('motor_theta', '<f4'), ('motor_x', '<f4'), ('motor_y', '<f4'), ('motor_z',
'<f4'), ('sweep_dir', 'i1'), ('timestamp', '<f8'), ('type', 'S9'), ('waveform', '<f8', (4096,)),
('x_offset', '<f8'), ('x_spacing', '<f8')]
我认为数据应该以列和行的形式呈现,我怎样才能以这种方式可视化输出?
如何将其转换为 .txt 文件?
有人告诉我这个问题可能是由于数据是 str 而不是浮动的,所以我试图通过将第三行 f 替换为:
f= h5py.File(float('15524.h5'), 'r')
但是python声明:
ValueError: could not convert string to float: '15524.h5'
我不经常编程,如果这是常识,我深表歉意。
【问题讨论】:
标签: python-3.x hdf5 txt