バイナリファイルを読み込むときにFROMFILEを使用して誤ったゼロ値を取得する
質問
Pythonでバイナリファイルを読み込もうとしています。これは私が使用するコードです:
fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)
.
しかし、アレイの最後に値がゼロになります。たとえば、nrows=296
とncol=439
とその結果としてlen(a)=296*439
がある場合は、a[-922:]
にゼロ値が得られます。私はこれらの値を知っているのを知っています(この例では-9999)R. R.では、私がこれらの非感知ゼロを手に入れるのか知っていますか?
P.S:私はそれが関係がないわけではありませんが、len(a)
はnrows*ncols+2
です。a = a[0:-2]
を使用してこれら2つを取り除く必要がありますので、a_reshape = a.reshape(nrows, ncols)
を使用して行や列に再設定してもエラーが発生しません。
解決
バイナリとして読み取るファイルを開くときは、"rb"
ではなくモード"r"
を使用してください。
これは、ドキュメント。Linuxマシンでは、"b"
は必要ありませんが、それは傷ついたままにしていません。Windowsマシンでは、バイナリファイルに"rb"
を使用する必要があります。
これらのブロックは、フォーマットされていないデータのブロック内のバイト数をリストする整数を表します。たとえば、[223] [223バイトのデータ] [223]。
所属していません StackOverflow