如何从现有HDF5数据集创建保留三维形状的单变量独立文件
解决方法
你得到二维数组的原因是f[part][:,i,:]用单值索引第二个维度时,自动把该维度压缩消失了,只要保留该维度即可,有两种常用实现方案:
方案1:索引时直接保留维度
把单值索引i替换为长度为1的切片i:i+1,不会触发维度压缩,直接得到[NX,1,NY]结构的数组,修改对应代码即可:
for part in parts: for i, field in enumerate(fields): fnew[field].create_dataset(part, data=f[part][:, i:i+1, :])
方案2:手动插入新维度
如果需要更灵活的维度控制,可以用numpy的np.newaxis在指定位置插入长度为1的维度:
import numpy as np for part in parts: for i, field in enumerate(fields): # 在第二个维度位置插入长度为1的新轴 arr = f[part][:, i, :][:, np.newaxis, :] fnew[field].create_dataset(part, data=arr)
也可以用reshape实现相同效果,写法更通用不需要感知上下文维度:
arr = f[part][:, i, :] arr = arr.reshape(arr.shape[0], 1, arr.shape[1])
两种方案都不会修改数据本身的数值,仅调整数组维度结构,完全适配后续代码要求。
内容的提问来源于stack exchange,提问作者boltz
相关产品推荐
相关产品推荐

