将完整数组保存为 python 中的 txt
Saving full array as txt in python
我现在正在尝试对音频文件进行采样并将采样中的信息存储到 txt 文件中。
采样是使用 librosa 完成的。
保存到文件时出现问题...
阵列没有得到完全保存,我只能看到一些采样点,其余的都是虚线。
示例:
22050.000
[ -8.61534572e-05 -1.64340396e-04 -8.03423245e-05 ..., -1.40137578e-04
-3.71412549e-04 -5.04361582e-04]
我是这样做的:
import tensorflow as tf
import numpy as np
import librosa
from os import listdir
from os.path import isfile, join
import os
path_train = "/home/k/kaldi-trunk/egs/start/s5/data/train"
path_test = "/home/k/kaldi-trunk/egs/start/s5/data/test"
dnn_train = "/home/k/kaldi-trunk/dnn/train/"
dnn_test = "/home/k/kaldi-trunk/dnn/test/"
dnn = "/home/k/kaldi-trunk/dnn/"
path = "/home/k/kaldi-trunk/egs/start/s5/data/"
train_filelist = path_train+"/wav_train.txt"
test_filelist = path_test+"/wav_test.txt"
files_train = [f for f in listdir(dnn_train) if isfile(join(dnn_train, f))]
files_test = [f for f in listdir(dnn_test) if isfile(join(dnn_test, f))]
os.chdir(dnn_train)
train = []
test = []
for line in files_train:
#print dnn_train+line
y,sr=librosa.core.load(dnn_train+line)
train.append(y.tolist())
print "Train done!"
for line in files_test:
x,sr=librosa.core.load(dnn_test+line)
test.append(x.tolist())
print "Test done!"
os.chdir(dnn)
with open('sample_test.txt','wb') as f:
np.savetxt(f,test)
with open('sample_train.txt','wb') as f:
np.savetxt(f,train)
有什么可以解释为什么我不能保存所有样本点而不是几个?
期望的输出是两个单独的文件 [sample_test,sample_train]
其中每一行包含一个列表。
列表中的每个条目都应包含尽可能多的小数,这就是为什么将其存储为 float 或 double 的原因。
np.savetxt
的参数应该是一个数组。
保存数据前添加test = np.array(test)
。
- 如果数据不能转换成数组,这会报错。
- 您可以打印数组的形状以供诊断:
print test.shape
您的输出表明您的数据中有一个浮点数和一个列表,而不是 NumPy 数组的内容。
我现在正在尝试对音频文件进行采样并将采样中的信息存储到 txt 文件中。
采样是使用 librosa 完成的。
保存到文件时出现问题... 阵列没有得到完全保存,我只能看到一些采样点,其余的都是虚线。
示例:
22050.000
[ -8.61534572e-05 -1.64340396e-04 -8.03423245e-05 ..., -1.40137578e-04
-3.71412549e-04 -5.04361582e-04]
我是这样做的:
import tensorflow as tf
import numpy as np
import librosa
from os import listdir
from os.path import isfile, join
import os
path_train = "/home/k/kaldi-trunk/egs/start/s5/data/train"
path_test = "/home/k/kaldi-trunk/egs/start/s5/data/test"
dnn_train = "/home/k/kaldi-trunk/dnn/train/"
dnn_test = "/home/k/kaldi-trunk/dnn/test/"
dnn = "/home/k/kaldi-trunk/dnn/"
path = "/home/k/kaldi-trunk/egs/start/s5/data/"
train_filelist = path_train+"/wav_train.txt"
test_filelist = path_test+"/wav_test.txt"
files_train = [f for f in listdir(dnn_train) if isfile(join(dnn_train, f))]
files_test = [f for f in listdir(dnn_test) if isfile(join(dnn_test, f))]
os.chdir(dnn_train)
train = []
test = []
for line in files_train:
#print dnn_train+line
y,sr=librosa.core.load(dnn_train+line)
train.append(y.tolist())
print "Train done!"
for line in files_test:
x,sr=librosa.core.load(dnn_test+line)
test.append(x.tolist())
print "Test done!"
os.chdir(dnn)
with open('sample_test.txt','wb') as f:
np.savetxt(f,test)
with open('sample_train.txt','wb') as f:
np.savetxt(f,train)
有什么可以解释为什么我不能保存所有样本点而不是几个?
期望的输出是两个单独的文件 [sample_test,sample_train] 其中每一行包含一个列表。 列表中的每个条目都应包含尽可能多的小数,这就是为什么将其存储为 float 或 double 的原因。
np.savetxt
的参数应该是一个数组。
保存数据前添加test = np.array(test)
。
- 如果数据不能转换成数组,这会报错。
- 您可以打印数组的形状以供诊断:
print test.shape
您的输出表明您的数据中有一个浮点数和一个列表,而不是 NumPy 数组的内容。