小编Joa*_*him的帖子

将 std::vector 作为 numpy 数组返回给 python

使用 Pybind11,我试图将一个 numpy 数组传递给 c++ 到 a 中std::vector,将其乘以 2,然后将其std::vector作为 numpy 数组返回给 python。

我已经完成了第一步,但第三步是在做一些奇怪的事情。为了将它传回,我使用了:py::array ret = py::cast(vect_arr);奇怪的是,我的意思是 Python 中返回的向量没有正确的维度和正确的顺序。

例如,我有数组:

[[ 0.78114362  0.06873818  1.00364053  0.93029671]
 [ 1.50885413  0.38219005  0.87508337  2.01322396]
 [ 2.19912915  2.47706644  1.16032292 -0.39204517]]
Run Code Online (Sandbox Code Playgroud)

代码返回:

array([[ 1.56228724e+000,  3.01770826e+000,  4.39825830e+000,
         5.37804299e+161],
       [ 1.86059342e+000,  4.02644793e+000, -7.84090347e-001,
         1.38298992e-309],
       [ 1.75016674e+000,  2.32064585e+000,  0.00000000e+000,
         1.01370255e-316]])
Run Code Online (Sandbox Code Playgroud)

我已经阅读了文档,但我必须承认无法理解其中的大部分内容。因此,对于这个具体示例的任何帮助将不胜感激。提前致谢。

这是一个尝试的例子:

#include <pybind11/pybind11.h>
#include <pybind11/numpy.h>
#include <pybind11/stl.h>
#include <Python.h>
namespace py = pybind11;
py::module nn = py::module::import("iteration");


py::array nump(py::array arr){

    auto arr_obj_prop = …
Run Code Online (Sandbox Code Playgroud)

c++ python numpy vector pybind11

5
推荐指数
1
解决办法
2917
查看次数

标签 统计

c++ ×1

numpy ×1

pybind11 ×1

python ×1

vector ×1