我想把numpy数组转换成c++端的double*或stl向量。实际上,我使用的是PyCXX,但我无法找到访问数据的方法。在
我现在可以像这样访问和返回数据缓冲区:
Py::Object arrayShape(const Py::Tuple& args ){
Py::Object array= args[0];
return array.getAttr("data");
}
但我不知道该怎么办。我的最终目标是从中获得一个gsl_向量。理想情况下,我不需要重新复制记忆。但也许这要求太多了;)
Tags:
当我在寻找一个解决方案,而我只能找到其他人张贴相同的,长期未回答的问题,我张贴的解决方案,一旦我发现它。你的问题真是个问题。在
首先,强烈考虑使用赛顿作为你的胶水,不要再沿着这条危险的道路前进。在
另外,如果可能,使用PyArray_FromAny将为您提供底层数据的视图,否则将提供一个副本。一个非常简单的示例(如果您是诚实善良的人,则使用-std=c++11构建;如果您是Windows用户,则使用VS2013构建):
注意true参数是“owned”对象的Py::Object构造函数的第二个参数!An example of a cpython3 extension that uses the Numpy C API in combination with PyCXX with cmake for building.链接指向特定提交,因为我正在考虑将此扩展切换回使用Cython。在
相关问题 更多 >
编程相关推荐