2016-12-07 122 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倍。 –