【问题标题】:Why is a CSV file derived from a WAV file so much bigger than the original WAV file?为什么从 WAV 文件派生的 CSV 文件比原始 WAV 文件大得多?
【发布时间】:2016-12-07 08:50:18
【问题描述】:

我使用了 scipy.io.wavfile 中的 read 函数,然后是 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。这怎么可能?我认为单个向量应该更小?

【问题讨论】:

    标签: python csv scipy wav


    【解决方案1】:

    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。

    【讨论】:

    • 谢谢!这就说得通了。我现在只使用numpy.save 函数将其保存到.npy 文件中。它仍然会增加数据大小,但比使用 numpy.savetxt 时要小 3 倍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多