呼叫C++;在python中使用特征库函数 我在C++的帮助下做了一些计算,函数是这样的: MatrixXd Cov(MatrixXd Data) { VectorXd meanVector; ... return Covariance; } 您所在的位置:网站首页 呼叫发生旋转并且呼叫受限什么意思 呼叫C++;在python中使用特征库函数 我在C++的帮助下做了一些计算,函数是这样的: MatrixXd Cov(MatrixXd Data) { VectorXd meanVector; ... return Covariance; }

呼叫C++;在python中使用特征库函数 我在C++的帮助下做了一些计算,函数是这样的: MatrixXd Cov(MatrixXd Data) { VectorXd meanVector; ... return Covariance; }

2023-04-21 02:06| 来源: 网络整理| 查看: 265

呼叫C++;在python中使用特征库函数 我在C++的帮助下做了一些计算,函数是这样的: MatrixXd Cov(MatrixXd Data) { VectorXd meanVector; ... return Covariance; }

python c++ matrix

呼叫C++;在python中使用特征库函数 我在C++的帮助下做了一些计算,函数是这样的: MatrixXd Cov(MatrixXd Data) { VectorXd meanVector; ... return Covariance; },python,c++,matrix,eigen,python-c-api,Python,C++,Matrix,Eigen,Python C Api,..在wrap python函数中: static PyObject *Wrap_Cov(PyObject *self,PyObject *args) { Pyobject *Objectdata; if(!PyArg_ParseTuple(args,"O", &ObjectData)) return NULL; Cov(ObjectData); return Py_BuildValue("O",&cov

..在wrap python函数中: static PyObject *Wrap_Cov(PyObject *self,PyObject *args) { Pyobject *Objectdata; if(!PyArg_ParseTuple(args,"O", &ObjectData)) return NULL; Cov(ObjectData); return Py_BuildValue("O",&covariance_answer); } 显然,Python不知道我定义的“对象”,它不能将“MatrixXd”转换为“对象”,我认为它是某种“数组”,而不是“对象” 在不使用boost的情况下,如何做到这一点?如果使用不同语言编写的数字模块进行接口,最好尽量保持数据交换的平坦性 Libegen实矩阵的最平坦表示是实数类型的c数组(浮点或双精度)

这是一个C++样本

像 python2.7 setup_eigen_python.py install --user 这里有一个小测试驱动程序

特别是,但迄今为止还没有限制,因为必须在不增加的情况下相处,所以最好使用C++ 2011标准的特性,如“代码>自动和 STD::UNQuijyPTR ,但我不知道QO是否对此有足够的支持。P>可以使用C++生成包装器,这样Python就知道了你的类的接口。不幸的是,我不知道这个过程的细节,因为我自己没有做过(只使用了一个已经完成的库),这就是为什么这是一个注释而不是答案。你能确认你想为Python创建一个C++扩展吗?换句话说,你想让你的C++ COVE()函数对你的Python脚本可用吗?如果是这样,您基本上想使用pyGAR**函数从Python函数参数中提取数据到C++变量(而不是上面的PyObjor),然后使用pyBuff*函数将结果传递回Python。如果您提供的python代码显示了一个示例用例,那么我们可以发布一个答案。但是SWIG是一个工具,我经常使用它来生成C++代码,它可以为PyARG和PyBug等所有调用,使用异常传播等等。所有使用SWIG所必须做的就是安装在您的计算机上,创建一个.i文件,其中包括Matrxd类的.h和COV函数,运行它,构建SWIG生成的库,然后启动Python:您可以从Python中调用Cov,因为您根本没有C API可供使用@哇,谢谢!这是一个很好的建议。在我的个人项目中,我会尽量记住这一点。你想要Cython或SWIG解决方案,还是希望这个包装用纯C编写?

from distutils.core import setup, Extension cpp_args = ['-Wall', '-pedantic'] cxx_args = ['-std=c++11'].extend(cpp_args) module_eigen_python = Extension('eigen_python', define_macros = [('MAJOR_VERSION', '0'), ('MINOR_VERSION', '1')], include_dirs = ['/usr/local/include'], sources = ['eigen_python.cpp'], extra_compile_args = cpp_args # sources = ['eigen_python.cxx'], # extra_compile_args = cxx_args ) setup (name = 'eigen_python', version = '0.1', description = 'This is just a demo', author = 'Solkar', url = 'http://stackoverflow.com/questions' + '/15573557/call-c-using-eigen-library-function-in-python', long_description = 'just a toy', ext_modules = [module_eigen_python]) python2.7 setup_eigen_python.py install --user import eigen_python as ep import numpy as np DIM = 4 M = np.array(ep.randomDxDMatrix(DIM), order="F") M.shape= DIM,DIM print(M)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有