2016-12-07 19 views
1

我用功能scipy.io.wavfile其次numpy.arraynumpy.savetxt为WAV文件转换成存储在CSV向量。像这样:为什么从WAV文件导出的CSV文件比原始WAV文件大得多?

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。这怎么可能?在我看来,单个矢量应该更小一些?

回答

4

np.savetxt()将先前将紧凑的intfloat表示的一系列数字转换为它们的ASCII表示形式。例如,np.savetxt('test.txt', np.arange(10), delimiter=",")创建250字节的文本文件,它看起来像:

0.000000000000000000e+00 
1.000000000000000000e+00 
2.000000000000000000e+00 
... 

假设每个最初表示为一个32位浮点数字的,这将表示为40个字节的存储器以250个字节的增加的文字,或比例为6.25。

+0

谢谢!这就说得通了。我现在只需使用'numpy.save'功能将其保存到'.npy'文件中。它仍然会增加数据大小,但是比使用'numpy.savetxt'时要小3倍。 –