0.问题描述
在做语音的特征提取的时候,需要将numpy数组内的数据写入到txt文件中,但是在写入后却是这个狗样子,自动给我缺省了一些数据,且还存在一些其他问题,写入txt的原始代码如下所示:
'''...此处省略一些无用代码'''
mfccs_labels=[]
# 循环读取文件名称
for filename in filenames:
mfccs_1=mfcc_1(filename) #调用python_speech_features包生曾 mfccs参数 #将mfccs矩阵 (帧数*39)reshape 为一维(帧数x39*1)
mfccs_1dim=mfccs_1.reshape(1,-1)
#解析语种类别
language_type=filename.split('.')[-3].split('\\')[-1]
#将mfccs特征和 语种类别标签 存入language.txt中
mfccs_label=str(mfccs_1dim)+"\t"+language_type
mfccs_labels.append(mfccs_label)
#将文件保存至txt
np.savetxt(txt_path, mfccs_labels, fmt='%s', delimiter=',')
而距离我真正需要的数据,还需要如下改动
1. 去掉数组两端的[[]]
2. 不再缺省数据
3. 小数点后只需显示4位
4. 不使用科学计数法
5. 设置numpy每一行的显示个数
1. 解决方案
在经过多次修改,终于将以上问题一一解决,并将修改版后的代码列出在下方:
在引入numpy后,对numpy可以进行一下设置
import numpy as np
np.set_printoptions(threshold=np.inf) # 不限制numpy显示的列数
np.set_printoptions(suppress=True) #设置numpy数据不以科学计数法输出
np.set_printoptions(linewidth=np.inf) #设置numpy每一行显示的个数,这里直接设置为最大值
'''...此处省略一些无用代码'''
# 循环读取文件名称
for filename in filenames:
mfccs_1=mfcc_1(filename) #调用python_speech_features包生曾 mfccs参数
mfccs_1dim=mfccs_1.reshape(1,-1) #将mfccs矩阵 (帧数*39)reshape 为一维(帧数x39*1)
language_type=filename.split('.')[-3].split('\\')[-1] #解析语种类别
mfccs_1dim = np.around(mfccs_1dim,4) #将数据保留4位小数
#将mfccs特征和 语种类别标签 存入language.txt中
mfccs_label=str(mfccs_1dim)[3:-3]+"\t"+language_type #去掉字符串中的[[ 和 ]],所以选取3到-3
mfccs_labels.append(mfccs_label)
#将文件保存至txt
np.savetxt(txt_path, mfccs_labels, fmt='%s', delimiter=',')
修改后变成下边这个样子:
好了,大功告成,可以下一步的操作了。