javaまたはclojureを使用してバイナリファイルから浮動小数点値を読み取る方法に関するアドバイスはありますか?現在の値をPythonのNumPyのnump.fromfile('path', dtype="f")
メソッドの結果と比較していますが、私は単純に同じ答えを得ていません。NumPyとClojure/Javaの間の浮動小数点数の相違
4バイトの入力データを読み込んで、 float値を返します。私は、this documentationショーのようにJavaの
DataInputStream.readFloat()
方法は、バイナリファイルはJavaで書かれたことを前提としているため、これがあると思われます。これは最初に のint値を正確に のreadIntメソッドの方法で構築し、次に のfloat.intBitsToFloatメソッドと全く同じ方法でこのint値をfloat に変換します。このメソッドは、 によって書き込まれたバイトを読み取るのに適した です。 DataOutputのwriteFloatメソッドです。
だから、私はJavaが浮動小数点値を逆方向に読み込んでいると思います。最初の12バイトは、次のとおりですnumpyのとPythonを繰り返し-999.0
として、それを見ながら
(0 -64 121 -60 0 -64 121 -60 0 -64 121 -60)
のClojure/Javaは、繰り返し1.7676097E-38
としてこれを見ています。参考までに、this datasetを使用しています。
cgrandこれはすばらしく動作します。私は今、私にファイルへのアクセスを与えるByteBufferを持っています。次の質問は、バイトバッファを3Dマトリックスとして扱う方法です。 –
スパースかどうか読み取り専用、永続性または変更可能? – cgrand