大規模な科学データセットの処理にClojureとIncanterを使用したいと考えています。具体的には、このデータセットの0.5度バージョン(バイナリ形式でのみ使用可能)。
私の質問は、Java / Clojureでこの問題に対処するためのエレガントな方法について、どのような推奨事項がありますか?このデータセットをIncanterまたは他のJavaマトリックスパッケージに取り込む簡単な方法はありますか?
java.nio.ByteBuffer
次のコードを使用して、バイナリデータをに読み込むことができました。
(defn to-float-array [^String str]
(-> (io/to-byte-array (io/to-file str))
java.nio.ByteBuffer/wrap
(.order java.nio.ByteOrder/LITTLE_ENDIAN)))
今、私はこれByteBuffer
を配列として操作し始める方法に本当に苦労しています。私はPythonのNumPyを使用してきました。これにより、これらの巨大なデータセットを非常に簡単に操作できます。これが私がやろうとしていることのPythonコードです:
// reshape row vector into (time, lat_slices, lon_slices)
// then cut out every other row
rain_data = np.fromfile("path/to/file", dtype="f")
rain_data = rain_data.reshape(24, 360, 720);
rain_data = rain_data[0:23:2,:,:];
このスライスの後、これらの12個の配列のベクトルを返したいと思います。(将来の関数入力として、それぞれを個別に操作する必要があります。)
したがって、このデータセットをIncanterに取り込む方法についてのアドバイスをいただければ幸いです。