C++ Python-向量到Numpy数组

C++ Python-向量到Numpy数组,c++,boost,numpy,C++,Boost,Numpy,我有以下课程: class PyWav { public: static inline boost::python::object sdVecToNumpyArray(std::vector<double> const& vec) { npy_intp size = vec.size(); double * data = size ? const_cast<double *>(&vec[0])

我有以下课程:

class PyWav {

   public:

     static inline boost::python::object sdVecToNumpyArray(std::vector<double> const& vec)
    {
        npy_intp size = vec.size();

        double * data = size ? const_cast<double *>(&vec[0]) : static_cast<double *>(NULL);
        PyObject * pyObj = PyArray_SimpleNewFromData(1, &size, NPY_DOUBLE, data);
        boost::python::handle<> handle ( pyObj );
        boost::python::numeric::array arr(handle);

        return arr.copy();

    }

   // Access function 
   inline boost::python::numeric::array toNumPy()
   {
        std::vector<double> v = Signal(); // get the vector 
        boost::python::numeric::array arr = Lib::python::PyWav::sdVecToNumpyArray(
                                                                                  v);
        return arr;
   }

}; 
classpywav{
公众:
静态内联boost::python::objectsdvectonumpyarray(std::vector const&vec)
{
npy_intp size=vec.size();
double*data=size?const_cast(&vec[0]):静态_cast(NULL);
PyObject*pyObj=PyArray\u SimpleNewFromData(1,&size,NPY\u DOUBLE,data);
boost::python::handle句柄(pyObj);
boost::python::numeric::array arr(句柄);
返回arr.copy();
}
//访问功能
内联boost::python::numeric::数组toNumPy()
{
std::vector v=Signal();//获取向量
boost::python::numeric::array arr=Lib::python::PyWav::sdVecToNumpyArray(
v) );
返回arr;
}
}; 
问题是我不知道如何访问stdVecToNumpyArray并通过向量?我希望方法“toNumPy()”对用户开放,但不是sdVecToNumpyArray

我得到以下错误:

错误:请求从“boost::python::api::object”转换为非标量类型“boost::python::numeric::array” v) )


有人有什么想法吗

您可能需要显式强制转换,如下所示:

boost::python::numeric::array arr(static_cast(handle));
boost::python::numeric::array arr(static_cast<boost::python::numeric::array>(handle));