本文介绍了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数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!