Python 为什么从WAV文件派生的CSV文件比原始WAV文件大得多?
我使用了scipy.io.wavfile中的read函数,后跟numpy.array和numpy.savetxt,将WAV文件转换为存储在CSV中的向量。像这样:Python 为什么从WAV文件派生的CSV文件比原始WAV文件大得多?,python,csv,scipy,wav,Python,Csv,Scipy,Wav,我使用了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=",")
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()
将以前一系列数字的紧凑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的比率。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倍。谢谢!这是有道理的。现在我只需使用numpy.save
函数将其保存到.npy
文件中。它仍然会增加数据大小,但比使用numpy.savetxt
时要小3倍。