Python HDF5 扩展阵列
Python HDF5 expand array
我正在尝试扩展 进行整形(2048000, 64) 。在最后一列中,我想添加来自“”。但是我完全不知道该怎么做。
到目前为止我已经尝试过:
mic['time_data'].resize(64, axis = 0)
但它 returns 我是
我对 HDF5 文件还很陌生,所以如果您需要比我提供给您更多的信息,请告诉我!
重新阅读您的 post 后,我意识到您的数据集可以调整大小(否则 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]
万一以后其他人也有这个问题。这就是我解决它的方法(可能不是一个很好的解决方案,但它有效):
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 file
我正在尝试扩展
到目前为止我已经尝试过:
mic['time_data'].resize(64, axis = 0)
但它 returns 我是
我对 HDF5 文件还很陌生,所以如果您需要比我提供给您更多的信息,请告诉我!
重新阅读您的 post 后,我意识到您的数据集可以调整大小(否则 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]
万一以后其他人也有这个问题。这就是我解决它的方法(可能不是一个很好的解决方案,但它有效):
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 file