我试图扩展以形成(2048000,64)。在最后一列中,我想添加"”。但我不知道该怎么做。
到目前为止,我已经尝试过:
mic['time_data'].resize(64, axis = 0)但是它返回一个“
我对HDF5文件非常陌生,所以如果你需要比我给你的更多的信息,请告诉我!
发布于 2021-09-02 18:15:52
在重新阅读您的文章之后,我意识到您的数据集是可调整大小的(否则h5py会在调整大小时抛出一个错误)。您可以通过比较.shape属性和.maxshape属性来确认。注意:None表示在该轴上没有大小限制。
为了将来的参考,如果您想要一个可调整大小的数据集,则在创建maxshape=()参数时包括它。对于此特定数据集,如果只希望调整轴1的大小,请使用maxshape=(2048000, None)。
意外的结果是由调整大小声明中的一个小错误造成的。从形状(2048000,63)到形状(2048000,64)应该是:mic['time_data'].resize(64, axis=1)或mic['time_data'].resize((2048000, 64))
最新答案
下面是一个扩展的答案,它展示了如何将数据从'assembledH5Trigger.h5'添加到'assembledH5TEST.h5'。作为参考,在将数据从触发器复制到麦克风文件之前,它会打印.shape和.maxshape参数。
with h5py.File('assembledH5TEST.h5', 'r+') as mic, \
h5py.File('assembledH5Trigger.h5', 'r') as trigger:
print(f"mic['time_data'] shape={mic['time_data'].shape}; " + \
f" maxshape={mic['time_data'].maxshape}")
print(f"trigger['time_data'] shape={trigger['time_data'].shape}; " + \
f"maxshape={trigger['time_data'].maxshape}")
mic['time_data'].resize((2048000, 64))
mic['time_data'][:,63] = trigger['time_data'][:,0]发布于 2021-09-02 18:43:03
在这种情况下,其他人在将来也会有这个问题。我就是这样解决这个问题的(可能不是一个很好的解决方案,但它是有效的):
mic = h5py.File('assembledH5TEST.h5', "r+")
trigger = h5py.File('assembledH5Trigger.h5', "r")
arr = np.ones((2048000, 64))
arr[:, 0:63] = mic["time_data"][:]
arr[:,63] = trigger['time_data'][:,0]
# Code to write arr to hdf5 filehttps://stackoverflow.com/questions/69035032
复制相似问题