草庐IT

cython_bbox

全部标签

python - Cython 安装 GCC 错误

尝试在运行UbuntuServer的小型VPS上安装Cython。没有sudoapt-getinstallgcc然后pythonsetup.pyinstall在Cython目录中,但我得到了这个奇怪的错误。runninginstallrunningbuildrunningbuild_pyrunningbuild_extbuilding'Cython.Plex.Scanners'extensiongcc-pthread-fno-strict-aliasing-DNDEBUG-g-fwrapv-O2-Wall-Wstrict-prototypes-fPIC-I/usr/include/py

python - 在 Cython 中使用缓冲区 API

我正在使用一个C库,该库重复调用用户提供的函数指针以获取更多数据。我想编写一个Cython包装器,使得该回调的Python实现可以返回任何合理的数据类型,如str、bytearray、内存映射文件和依此类推(具体来说,支持Bufferinterface)。到目前为止我所拥有的是:fromcpython.buffercimportPyBUF_SIMPLEfromcpython.buffercimportPy_bufferfromcpython.buffercimportPyObject_GetBufferfromcpython.buffercimportPyBuffer_Releasef

python - 对象成员的 Cython 缓冲区声明

我想要一个带有NumPy成员的Cython“cdef”对象,并且能够使用快速缓冲区访问。理想情况下,我会这样做:importnumpyasnpcimportnumpyasnpcdefclassModel:cdefnp.ndarray[np.int_t,ndim=1]Adefsum(self):cdefinti,s=0,N=len(self.A)for0不幸的是,Cython无法编译这个,错误Buffertypesonlyallowedasfunctionlocalvariables.我使用的解决方法是在分配给对象成员的新局部变量上声明缓冲区属性:cdefclassModel:cdefn

c++ - 用于将 cython 中的许多 c++ 类包装到单个共享对象的项目结构

我在文档、邮件列表和thisquestionhere之间找到了部分答案。,但我想得到一个更直接的答案来解决我的具体问题......我正在学习cython,方法是尝试一点一点地包装我已经在使用的库的小部分,该库目前包装在boost::python中。我为这个boost包装器贡献了一点点,并将它用作c++引用,同时我正在使用ZeroMQPythonbindings作为cython引用。我的问题是关于项目结构的。这个库的当前boost版本编译为单个.so,这就是我的目标。我很快发现你不能直接将多个.pyx模块编译为单个.so。然后我开始在pxd文件中定义cppclass的路线,并在.pxi中

python - Python/Cython 中的快速 n 维稀疏数组

我有一个应用程序涉及非常稀疏的大型n维数组。scipy.sparse具有有用的“矢量化获取和设置”功能,因此可以使用Cython快速填充稀疏矩阵。当然scipy包不能处理n维。我发现有两个包在pythonsparray和ndsparse中执行n维稀疏数组。但是似乎两者都没有矢量化获取和设置功能。所以我需要:一个用于n维数组的python包,带有矢量化get和set或一个用于稀疏数组的c库,我可以使用Cython或轻松访问它一些“自己动手”选项,我猜这需要一个等效于pythondict的c出于我的目的,我认为将n维坐标映射回一维或二维可能会起作用。更好的是有一个dict等价物,我可以在C

python - 在 Cython 中制作可执行文件

一直在玩cython。通常使用Python编程,但在前世使用过C。我不知道如何制作独立的可执行文件。我已经下载了cython,我可以制作一个.pyx文件(这只是一个带有.pyx扩展名的普通Python文件),它在Pythonshell中执行,使用:导入pyximport;pyximport.install()我可以在命令行生成一个.c文件:cythonfile.pyx我可以通过构建标准setup.py并执行来生成.so文件:setup.pybuild_ext--inplace我尝试使用带有各种选项的gcc从.so文件中制作可执行文件,但总是有大量丢失的文件、头文件等。我尝试从几乎所有地

python - 如何使用 pyximport 以交互方式重新加载 cython 模块

在编写python代码时,我的典型工作流程是使用交互式提示并执行类似的操作writefunctionrepeatuntilworking:testfunctioneditfunction一旦我确定一切正常,我将以非交互模式运行代码并收集结果。有时函数运行速度有点慢,必须进行优化。我有兴趣使用cython来优化这些慢速函数,但我想保留我的交互式工作流程,即运行函数、进行更改、再次运行它们。有没有简单的方法可以做到这一点?到目前为止,我已经尝试将我的cython函数放在单独的模块“my_functions.pyx”中:deffun1(intx):returnx+130deffun2(int

python - Cython:键入的内存 View 是键入 numpy 数组的现代方式吗?

假设我想将一个numpy数组传递给cdef函数:cdefdoublemysum(double[:]arr):cdefintn=len(arr)cdefdoubleresult=0foriinrange(n):result=result+arr[i]returnresult这是处理输入numpy数组的现代方法吗?比较一下这个问题:cython/numpytypeofanarray如果我想执行以下操作怎么办:cdefdouble[:]mydifference(inta,intb):cdefdouble[:]arr_a=np.arange(a)cdefdouble[:]arr_b=np.ar

python - Cython 没有速度提升

我正在尝试定义一个包含用于模拟积分的内部循环的函数。问题是速度。在我的机器上评估一次函数可能需要30秒。由于我的最终目标是最小化这个函数,所以一些额外的速度会很好。因此,我试图让Cython工作,但我一定犯了一个严重的错误(可能很多!)。按照Cython文档,我尝试输入我的变量。这样做之后,代码和纯Python一样慢。这看起来很奇怪。这是我的代码:importnumpyasnpcimportcythoncimportnumpyasnpimportminuitdata=np.genfromtxt('q6data.csv',usecols=np.arange(1,24,1),delimit

python - 通过 Cython 将 numpy 数组传递和返回给 C++ 方法

在这个网站上有很多关于在cython中使用numpy的问题,一个特别有用的问题是SimplewrappingofCcodewithcython.但是,cython/numpy接口(interface)apiseemstohavechangedabit,尤其是确保内存连续数组的传递。在cython中编写包装函数的最佳方法是:采用可能但不一定连续的numpy数组调用带有签名double*data_in,double*data_out的C++类方法返回该方法写入的double*的numpy数组?我的尝试如下:cimportnumpyasnpimportnumpyasnp#assuggeste