我把一些特征矩阵转换成PyObject的:
typedef Matrix<double, Dynamic, Dynamic, RowMajor> RMatrix;
static PyObject * myfunc(PyObject * self, PyObject * args)
{
double scalar;
RMatrix mat_1;
RMatrix mat_2;
// some works
PyObject * py_scalar = PyFloat_FromDouble(scalar);
npy_intp size_1[2] = {(npy_intp)mat_1.rows(), (npy_intp)mat_1.cols()};
PyObject * py_mat_1 = PyArray_SimpleNewFromData(2, size_1, NPY_DOUBLE, mat_1.data());
npy_intp size_2[2] = {(npy_intp)mat_2.rows(), (npy_intp)mat_2.cols()};
PyObject * py_mat_2 = PyArray_SimpleNewFromData(2, size_2, NPY_DOUBLE, mat_2.data());
PyObject * tuple = PyTuple_New(3);
PyTuple_SetItem(tuple, 0, py_scalar);
PyTuple_SetItem(tuple, 1, py_mat_1);
PyTuple_SetItem(tuple, 2, py_mat_2);
return tuple;
}
问题是,C++中的^ {< CD1>}与Python中的^ {
更新:问题的原因应该是退出函数时内存被破坏。创建一个新数组(PyArray_FromAny
)并复制数据(memcpy
)解决了这个问题。在
目前没有回答
相关问题 更多 >
编程相关推荐