为什么从 WAV 文件导出的 CSV 文件比原始 WAV 文件大得多?

Why is a CSV file derived from a WAV file so much bigger than the original WAV file?

我使用了 read 函数 scipy.io.wavfile 然后是 numpy.array numpy.savetxt 将 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。这怎么可能?我心目中单个向量应该更小?

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。