【发布时间】:2017-07-28 06:14:02
【问题描述】:
我正在尝试使用以下过程将可变长度数组列表存储在 HDF 文件中:
phn_mfccs = []
# Import wav files
for waveform in files:
phn_mfcc = mfcc(waveform) # produces a variable length multidim array of the shape (x, 13, 1)
# Add MFCC and label to dataset
# phn_mfccs has dimension (len(files),)
# phn_mfccs[i] has variable dimension ([# of frames in ith segment] (variable), 13, 1)
phn_mfccs.append(phn_mfcc)
dt = h5py.special_dtype(vlen=np.dtype('float64'))
mfccs_out.create_dataset('phn_mfccs', data=phn_mfccs, dtype=dt)
看起来我的数据类型并没有解决问题——而不是 mfccs_out 数据集的每个元素都包含一个多维数组,它只包含一个一维数组。例如如果我附加的第一个phn_mfcc 最初具有维度(59,13,1),则mfccs_out['phn_mfccs'][0] 具有维度(59,)。
我怀疑这是因为我只是使用 float64 数据类型,而我需要其他东西来存储数组?但是,如果我没有指定数据集或尝试使用dtype='O',它会吐出一个错误,例如“Object dtype 'O' has no native HDF equivalent”。
理想情况下,我希望mfccs_out['phn_mfccs'][i] 包含我附加到列表phn_mfccs 的第i 个phn_mfcc。
【问题讨论】: