有没有一种方法可以将假设存储为向量的字符串转换为向量



我将mfcc数据保存到pandas数据帧中。我的问题是,当我想将其作为数字矩阵访问时,我将其保存为str类型。

i=0
for file in train_csv2['fname']:
signal, sr = librosa.load(file)
mfcc = librosa.feature.mfcc(signal, sr=sr,
n_mfcc=13, 
n_fft=2048, 
hop_length=512)
mfcc = mfcc.T
train_csv2.at[i, 'FFT'] = mfcc
i += 1

运行完这段代码后,我的数据帧traincsv2已经将所有值存储为字符串。由于我使用了大量的音频文件,我花了3.5个小时运行这个程序。

是否有转换字符串的方法。。。

[[-8.46002580e+00  7.08650460e-01 -1.35593844e+01 ... -9.93381115e+00n  -3.62304403e+00  4.12729614e+00]n [ 9.54518993e+00 -2.74505349e+00 -1.17114286e+01 ... -8.55533103e+00n   1.88484478e-01  7.91402262e+00]n [ 1.49292642e+01 -1.56909610e+01 -1.10280461e+01 ... -8.37234667e+00n   9.35007917e+00  1.34211000e+01]n ...n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]]

转换为列表/矢量?

我尝试了@Nicolescu建议的上述方法,经过一些推特处理,效果很好!(它最初返回了一个空列表列表(

由于您使用DataFrame运行,我建议对上面的答案进行一些更改:

def clean_feat(input):    
first_clean = input[1:len(input) - 1]
second_clean = first_clean.replace('n', '')
last = second_clean.split()
return_list = []
for array in last:
return_list.append([float(array)])
return return_list
results = [clean_feat(x) for x in train_csv2['FFT']]

希望这能有所帮助,感谢Nicolescu Ionut Lucian的原创想法,帮助我格式化自己的代码!

试试这个代码:

def test_1(self):
input = '[[-8.46002580e+00  7.08650460e-01 -1.35593844e+01 -9.93381115e+00n  -3.62304403e+00  4.12729614e+00]n [ 9.54518993e+00 -2.74505349e+00 -1.17114286e+01 -8.55533103e+00n   1.88484478e-01  7.91402262e+00]n [ 1.49292642e+01 -1.56909610e+01 -1.10280461e+01 -8.37234667e+00n   9.35007917e+00  1.34211000e+01]n ...n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]n [-6.22648700e+02  0.00000000e+00  0.00000000e+00 ...  0.00000000e+00n   0.00000000e+00  0.00000000e+00]]'
first_clean = input[1:len(input) - 1]
second_clean = first_clean.replace('n', '')
third_clean = re.findall('[(.*?)]', second_clean)
return_list = []
for array in third_clean:
return_list.append([float(arr) for arr in array.split(' ') if arr])
return return_list

相关内容

  • 没有找到相关文章

最新更新