私はPythonの2次元のnumpy配列を持っていますが、私はそれらをC++で読むことができるバイナリ形式に変更したいと思います。 C++の2次元配列は、要素の配置に使用される2つのポインタを持つ1次元配列の一種です。 Pythonのどの機能を使って、仕事や他の解決策を実行することができるのか教えてください。numpy二次元配列をディスクに保存する方法C++で読み取ることができるバイナリ形式の一種として
0
A
答えて
1
これはコメントのためには長すぎますが、おそらくそれ自身で実行するのに十分ではありません。 Tomがあなたの質問のコメントで言及したように、PythonとC++でよく定義されたフォーマット(hdf5
、.mat
)を保存してロードするライブラリを使うのがおそらく最も簡単な解決策です。そのようなライブラリを見つけて設定したくない場合は、をお読みください。
Numyはnumpy.save
を使用してデータを(thisを参照)、 フォーマット(hereに記載)は、ヘッダデータに続いて、データ型およびアレイ状の数に関する情報を、ある状態保存する能力を有します。だから完全な機能を持つパーサーを書かないといけない場合は、Pythonがデータを確実にfloat64
(または必要なタイプ)としてcの順番で保存するようにする必要があります(Fortranの順序付けはもう1つのオプションです)。
次に、C++コードでは、配列のデータ型がfloat64
であること、正しい順序が使用されていること、配列の大きさをチェックするだけです。適切な量のメモリを割り当て、割り当てられたメモリにファイルからそのバイト数を直接ロードできます。 2d索引を作成するには、割り当てられたメモリー内の各「行」へのポインターの配列を割り振る必要があります。
または、それをすべて処理するライブラリを使用してください。
関連する問題
- 1. 2次元配列形式をJavaのテキストファイルから正しく読み取ることができません
- 2. 多次元配列(表)を読み取ることができません
- 3. 多次元NumPy配列をstruct.packと同じディスクに書き込む方法は?
- 4. numpy配列としてジェネレーターデータを読み取る方法
- 5. Pythonは異なる形式での保存配列をnumpyの
- 6. PHPで配列多次元を読み取る方法
- 7. 一次元で2次元numpy配列を外挿する
- 8. ファイルを2次元文字配列として読み取る
- 9. 多次元文字列配列(おそらく)をnumpyで保存して読み戻すには?
- 10. numpy配列をTensorflow変数として保存する方法
- 11. numpy配列をtfrecordとして保存する方法は?
- 12. C++での大きな配列の保存と読み込み
- 13. C:二次元配列が一次元より遅い?
- 14. 二次元配列内の値に応じて、別の単一配列をCのバイナリに変換します
- 15. C#で二次元配列の配列を作成する
- 16. 二次元配列の行を別の配列に保存する
- 17. dngファイルをアンドロイドでピクセルの2次元配列として読み取る
- 18. テキストファイルとコードデータを多次元配列に読み取る
- 19. CSVファイルを読み込んで2次元配列に保存する
- 20. 多次元配列を二次元配列に代入する方法は?
- 21. C++ファイルから2次元配列に座標を読み取る方法
- 22. バイナリ形式でデータを保存する方法は?
- 23. numpyをTensorFlowのpythonでcPickle.PicklingErrorとして.npy形式で保存することはできません。
- 24. 二次元配列C#
- 25. エンコードされたnumpy配列をディスクに保存する方法は?
- 26. C文字列を2次元配列に保存する
- 27. Python Numpy - Numpy配列ではなく数値としてVector Numpy配列の要素を読み取る
- 28. バイナリ.datファイルを配列として読み取る
- 29. URLからデータを取得し、それをC#.NETのバイナリ形式でファイルに保存する方法
- 30. 二次元配列は行列形式で値を出力しません
私の提案:ライブラリを使用してください。私自身、HDF5を使用しています。これは、PythonとC++の両方とのインターフェイスを備えています。また、関連するNetCDFを検討することもできます。私はまた、[こちら](https://github.com/tdegeus/cnpy)の実験的なライブラリを探しました。 –