py::array_t<double>
で numpy 配列データを作ることができます.
配列を作るのはドキュメントにはあまり情報がないので, ソースコード(test code)を追うことになります.
配列を作る
py::array_t<double> a;
a.resize({N, M});
基本 resize でいけます.
配列のアクセス
a[1][2]
みたいにアクセスはできないです. []
は一次元配列のみ使えます.
a.data(i, j)
のようにして多次元配列アクセスします
配列の値を設定する
配列データは基本 const になっているので, a.data(1, 1) = 1.0
みたいにするのはできません.
配列に値を設定する場合は
a.mutable_at(0, 2) = 1.0;
などとして mutable にして(const はずし)アクセスが必要です.
Python での書き方(e.g. slice 記法)に慣れてしまうと C++ でフレキシブルにやるのには結構制約がある感じです.
その他のアクセスの方法
pybind11入門(3) NumPy連携その1
https://qiita.com/lucidfrontier45/items/183526df954c1d6580ba
ありがとうございます.