xtensor使用xt::xtensor参数typ向函数传递numpy数组

2024-05-18 12:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩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是一条路。在

^{pr2}$

所以我做了这个改变,棒极了-它仍然有效。但现在,我不知道该怎么称呼纽比。如果我像以前那样叫它np.ndarrays公司,这不再有效,并通知我类型不匹配。我也试过转换np.ndarrays公司使用np.asmatrix(x, dtype=np.float32),但这也不起作用。在

我应该如何从numpy调用这个函数来实现这个功能?在


Tags: 代码算法类型参数np公司floatndarrays
1条回答
网友
1楼 · 发布于 2024-05-18 12:34:32

xtensorxtensor-python等价物是pytensor,就像pyarrayxarrayxtensor-pyrhon等价物。请注意,xtensor和{}是不同的类型,即使它们接受相同类型的模板参数。pytensor可以被分配一个numpy数组,而xtensor则不能(相同的意思是xarray和{})。在

另外,关于调用代码形式R的能力,您是对的,pyarray和{}不是合适的类型。解决这个问题的一种方法是把你的实现放在泛型函数中接受任何一种表达式,然后为每种语言制作接口,接受适当的类型并提交给实现。在

< >您可以找到更多关于C++代码绑定到xtensor documentationthis blogpost

中其他语言的细节。

相关问题 更多 >

    热门问题