本文介绍了Boost.Python-矢量到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]) : 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;
   }

};

问题是我不知道如何访问stdVecToNumpyArray并通过向量?我希望向用户开放方法"toNumPy()",但不向用户开放sdVecToNumpyArray

The problem is I do not know how to access the stdVecToNumpyArray and pass through the vector? I want the method "toNumPy()" to be open to the user, but, not the sdVecToNumpyArray

我收到以下错误:

有人有什么想法吗?

推荐答案

您可能需要进行显式转换,例如: https://mail.python.org/pipermail/cplusplus-sig/2009-January/014194.html

You may need an explicit cast, like here: https://mail.python.org/pipermail/cplusplus-sig/2009-January/014194.html

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

这篇关于Boost.Python-矢量到Numpy数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 11:32