2016-04-22 18 views
1

整数と倍精度の両方を含むバイナリファイルがあります。 1つのコール(x = np.fromfile(f, dtype=np.int)のようなもの)または順次(値による値)のいずれかでそのデータにアクセスしたいと思います。しかし、NumPyはタイプを指定せずにバイナリファイルからの読み込みを許可していないようです。すべてを2倍に変換するかNumPyを忘れるべきですか?Python/NumPyで整数と倍精度の両方を含むバイナリファイルから配列を読み込みまたは構築する

編集。のは、ファイルの形式は、このようなものであるとしましょう:

int型

int型int型int型ダブルダブルダブルダブルダブルダブルダブル

など

+1

'struct'モジュールをチェックしてください。 – roadrunner66

+0

ファイルの形式を知っていて、どちらが整数で、double型であるかを知っていて、numpy配列を昇格型(たとえばすべてfloat)で埋めると、value-by-valueを読み取ることができないのはなぜですか? – Cyb3rFly3r

+1

"整数と倍数の両方を含むバイナリファイルがあります" - このバイナリファイルの形式は何ですか? "バイナリファイル"は、このデータの表現方法を示すのに十分な情報ではありません。これ以上の情報がなければ、このファイルの読み方を知ることはできません。 – user2357112

答えて

0
NumPy doesn't seem to allow to read from a binary file without specifying a type 

私の知っているんプログラミング言語ありません生のバイナリデータの種類を推測することができます。正当な理由から。あなたは解決しようとしているより高いレベルの問題は何ですか?

0

私はこのためにnumpyを必要とは思わないと思います。基本的なPythonバイナリライブラリstructがその仕事をしています。必要に応じて最後に与えられたタプルのリストをnumpy配列に変換します。ソースの場合

https://docs.python.org/2/library/struct.htmlと@martineau Reading a binary file into a struct in Python

from struct import pack,unpack 

with open("foo.bin","wb") as file: 
    a=pack("<iiifffffff", 1,2,3, 1.1,2.2e-2,3.3e-3,4.4e-4,5.5e-5,6.6e-6,7.7e-7) 
    file.write(a) 

with open("foo.bin","r") as file: 
    a=unpack("<iiifffffff",file.read()) 
    print a 

出力を参照してください。

enter image description here

:バイナリエディタ(Frhed)でバイナリファイルを表示

(1, 2, 3, 1.100000023841858, 0.02199999988079071, 0.0032999999821186066, 0.0004400000034365803, 5.500000042957254e-05, 6.599999778700294e-06, 7.699999855503847e-07) 

出力:

[(1, 2, 3, 1.100000023841858, 0.02199999988079071, 0.0032999999821186066, 0.0004400000034365803, 5.500000042957254e-05, 6.599999778700294e-06, 7.699999855503847e-07), (1, 2, 3, 1.100000023841858, 0.02199999988079071, 0.0032999999821186066, 0.0004400000034365803, 5.500000042957254e-05, 6.599999778700294e-06, 7.699999855503847e-07), (1, 2, 3, 1.100000023841858, 0.02199999988079071, 0.0032999999821186066, 0.0004400000034365803, 5.500000042957254e-05, 6.599999778700294e-06, 7.699999855503847e-07)] 
関連する問題