问题描述
我已经坚持了一个星期了。我正在初始化一个双打的二维向量并将它传递给一个简单的 将其乘以 2 并返回的 python 函数。
def in_arr_out_arr(arr_input):
print(arr_input)
arr_input2 = 2*arr_input
return (arr_input2)
PyObject* call_python_function_vector2d_input(PyObject* function_name,vector<vector<double>> args)
{
import_array()
PyObject* np_arg = (PyObject*)vector_to_nparray(args);
PyObject* pReturn,* pArgs;
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,np_arg);
pReturn = PyObject_CallObject(function_name,pArgs);
PyErr_PrintEx(0);
//cout << pReturn << "\n";
return pReturn;
}
static PyArrayObject* vector_to_nparray(vector< vector<double> >& vec,int type_num = PyArray_DOUBLE) {
size_t nRows = vec.size();
size_t nCols = vec[0].size();
npy_intp dims[2] = { nRows,nCols };
PyArrayObject* vec_array = (PyArrayObject*)PyArray_SimpleNew(2,dims,type_num);
double* vec_array_pointer = (double*)PyArray_DATA(vec_array);
for (size_t iRow = 0; iRow < vec.size(); ++iRow)
{
copy(vec[iRow].begin(),vec[iRow].end(),vec_array_pointer + iRow * nCols);
}
return vec_array;
}
这是我仅通过阅读本论坛上的一些先前答案而尝试的最后一个版本。 它可能与 np_arg 的连续内存分配块有关,但我没有 指针方面的很多专业知识
更新
我删除了所有函数,并在主函数中简单地运行了整个事情。它起作用了。 有人可以告诉为什么不在函数形式中运行。另外,如何使用单独的函数运行它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)