我正在玩 xtensor,这样我就可以从 Python 中使用它。但是,xtensor 的一个吸引力在于它也很容易为 R 进行绑定,因此只需编写一次算法,然后为 python 编写绑定和为 R 编写绑定,就大功告成了。
我从 python 开始,当我将参数类型设置为 xt::pyarray 时,我的代码可以正常运行。
void func(const xt::pyarray<float> x) { ... }
...
m.def("func", &func);
但是,如果我尝试进行 R 绑定,我怀疑 xt::pyarray 将不合适。此外,xt::pyarray 可能是 xt::xarray 类型。我记得在某处读到 xt::xtensor 可以更好地优化,因为事先知道维数。所以 xt::xtensor 是要走的路。
void func(const xt::xtensor<float, 2> x) { ... }
...
m.def("func", &func);
所以我做了这个改变,太棒了——它仍然有效。但是现在,我不知道如何从 numpy 调用它。如果我按照以前的方式调用它,使用 np.ndarrays,这将不再有效并通知我类型不匹配。我也试过用 转换 np.ndarrays np.asmatrix(x, dtype=np.float32)
,但这也不起作用。
我应该如何从 numpy 调用这个函数才能使它工作?