私はこのために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
出力を参照してください。
:バイナリエディタ(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)]
'struct'モジュールをチェックしてください。 – roadrunner66
ファイルの形式を知っていて、どちらが整数で、double型であるかを知っていて、numpy配列を昇格型(たとえばすべてfloat)で埋めると、value-by-valueを読み取ることができないのはなぜですか? – Cyb3rFly3r
"整数と倍数の両方を含むバイナリファイルがあります" - このバイナリファイルの形式は何ですか? "バイナリファイル"は、このデータの表現方法を示すのに十分な情報ではありません。これ以上の情報がなければ、このファイルの読み方を知ることはできません。 – user2357112