2016-12-07 9 views
1

私はを使用しましたがCSVに保存されているベクターにWAVファイルを変換するためにnumpy.arraynumpy.savetxt続いscipy.io.wavfileから機能をお読みください。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()は、一連の数値表現である以前にコンパクトなintまたはfloatをASCII表現に変換します。 250バイトのメモリ内の40バイトの増加に相当するであろう

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

は元々32ビット浮動小数点として表現された数値のそれぞれを仮定すると、たとえば、np.savetxt('test.txt', np.arange(10), delimiter=",")は次のようになります250バイトのテキストファイルを作成しますテキストの比率、または6.25の比率。

+0

ありがとうございます!それは理にかなっている。私は 'numpy.save'関数を使ってそれを' .npy'ファイルに保存するだけです。それでもデータサイズは増加しますが、 'numpy.savetxt'を使用した場合よりも3分の1になります。 –

関連する問題