2

次の数日間はPCにアクセスできませんが、この問題を頭から離れることはできません。私は圧縮アルゴリズムで遊んでいて、オーディオ用に独自のアルゴリズムを作成しましたが、ファイルへの出力ステップで立ち往生しています。だからここに私の質問があります、うまくいけば私は戻ってくる前に答えを見つけることができます、さもなければこれは私の心を食い尽くします。

1)いくつかの整数(たとえばint16)を持つnumpy X配列がある場合、ファイルオブジェクトを開いてfile.write(X)を実行すると、ファイル出力はどのようになりますか?数字?または数字のASCII?またはバイナリ?

2)上記の回答に応じて、このファイルをnumpy配列Xに読み込むにはどうすればよいですか?

基本的に、私の圧縮はいくつかのウェーブレット変換とfft変換を行い、あちこちでフィルタリングを行い、いくつかの数値を含む配列を返します。この配列の形式を知っており、すでにここで高い圧縮率を達成しています。次のステップは、最初にこれをダンプすることです。バイナリファイルへの配列。これを達成したら、次の目標は、ファイル/ベクターのある種のエントロピーコーディングを実装することです。

任意の入力をいただければ幸いです。

4

1 に答える 1

4

1)書く:

In [1]: f = open('ints','wb')
In [2]: x = numpy.int16(array([1,2,3]))
Out[2]: array([1, 2, 3], dtype=int16)
In [3]: f.write(x)
In [4]: f.close()

2)読書:

In [5]: f = open('ints','wb')
In [6]: x = f.read()
In [7]: x
Out[7]: '\x01\x00\x02\x00\x03\x00'
In [8]: numpy.fromstring(x, dtype=np.uint16, count=3)
Out[8]: array([1, 2, 3], dtype=uint16)

アップデート:

JFSebastianが提案したように、これを行うには、次のようなより良い方法があります。

またはJanneKarilaが提案したように:

于 2012-11-04T17:25:26.860 に答える