2017-08-23 3 views
0

私はPythonの2次元のnumpy配列を持っていますが、私はそれらをC++で読むことができるバイナリ形式に変更したいと思います。 C++の2次元配列は、要素の配置に使用される2つのポインタを持つ1次元配列の一種です。 Pythonのどの機能を使って、仕事や他の解決策を実行することができるのか教えてください。numpy二次元配列をディスクに保存する方法C++で読み取ることができるバイナリ形式の一種として

+1

私の提案:ライブラリを使用してください。私自身、HDF5を使用しています。これは、PythonとC++の両方とのインターフェイスを備えています。また、関連するNetCDFを検討することもできます。私はまた、[こちら](https://github.com/tdegeus/cnpy)の実験的なライブラリを探しました。 –

答えて

1

これはコメントのためには長すぎますが、おそらくそれ自身で実行するのに十分ではありません。 Tomがあなたの質問のコメントで言及したように、PythonとC++でよく定義されたフォーマット(hdf5.mat)を保存してロードするライブラリを使うのがおそらく最も簡単な解決策です。そのようなライブラリを見つけて設定したくない場合は、をお読みください。

Numyはnumpy.saveを使用してデータを(thisを参照)、 フォーマット(hereに記載)は、ヘッダデータに続いて、データ型およびアレイ状の数に関する情報を、ある状態保存する能力を有します。だから完全な機能を持つパーサーを書かないといけない場合は、Pythonがデータを確実にfloat64(または必要なタイプ)としてcの順番で保存するようにする必要があります(Fortranの順序付けはもう1つのオプションです)。

次に、C++コードでは、配列のデータ型がfloat64であること、正しい順序が使用されていること、配列の大きさをチェックするだけです。適切な量​​のメモリを割り当て、割り当てられたメモリにファイルからそのバイト数を直接ロードできます。 2d索引を作成するには、割り当てられたメモリー内の各「行」へのポインターの配列を割り振る必要があります。

または、それをすべて処理するライブラリを使用してください。

関連する問題