我使用了 scipy.io.wavfile 中的 read 函数,后跟 numpy.array 和 numpy.savetxt < / em>将WAV文件转换为CSV格式的矢量。像这样:
def read_wav(wav_file_name):
a = read('data/'+wav_file_name)
b = numpy.array(a[1],dtype=float)
numpy.savetxt('data/'+wav_file_name+'.csv', b, delimiter=",")
return b
但是,CSV文件现在为6.2MB,而WAV文件仅为490kB。怎么可能?在我看来,单个矢量应该更小?
答案 0 :(得分:4)
np.savetxt()
会将之前的一系列数字的紧凑int
或float
表示形式转换为它们的ASCII表示形式。例如,np.savetxt('test.txt', np.arange(10), delimiter=",")
创建一个250字节的文本文件,如下所示:
0.000000000000000000e+00
1.000000000000000000e+00
2.000000000000000000e+00
...
假设每个数字最初都表示为32位浮点数,则表示从内存中的40个字节增加到250个字节的文本,或者比率为6.25。