草庐IT

cython_bbox

全部标签

python - Cython numpy 数组形状,元组赋值

我用的成语size_x,size_y,size_z=some_array.shape在处理numpy数组时很常见。当所讨论的数组具有类型时,同样的事情在Cython中似乎不起作用,例如defsomeFunc(np.ndarray[np.float32_t,ndim=2]arr):sx,sy=arr.shape我们最终遇到了这样的编译错误Cannotconvert'npy_intp*'toPythonobject这可能是因为“形状”被转换为C数组(为了更快的访问),所以它不再是一个元组。是否有可能在Cython中以某种方式提取这个元组?(或者我应该坚持使用sx,sy=arr.shape[

python - 在 Cython 中调用外部 c++ 模板函数

我在C++头文件中声明和实现了许多C++模板函数,我想访问Cython中的一些函数。假设header.hpp中的c++代码如下templateTdoublit(T&x){return2*x;}我需要在.pyx文件和setup.py文件中写入什么,以便我可以在Python中使用该函数作为>>>importmodname>>>printmodname.doublit(3)6PS:是否可以在PYPY中访问相同的功能?而且,如果是,如何?感谢您的帮助。但是,当我尝试按照您的方式进行操作时,我遇到了更多困难(如下)。doublit.htemplateTdoublit(T&x){return2*x

c++ - 如何在 Cython 中返回新的 C++ 对象?

我怀疑对此有一个简单的答案,但我需要一些帮助才能开始使用Cython。我有一个现有的C++代码库,我想通过Cython将其公开给Python。对于我想要公开的每个类,我创建了一个Cythoncppclass_ClassName和Python包装器类ClassName。一个最小的例子:Object.hCythonMinimal.pyxsetup.pyObject.h的内容:classObject{public:Objectclone(){Objecto;returno;}};CythonMinimal.pyx的内容:cdefexternfrom"Object.h":cdefcppclas

python - 如何在 Cython 和 Weave 中编写快速的 log-sum-exp?

我正在寻找从Python代码加速log-sum-exp(使用“最大技巧”)操作的选项。我在Windows8上使用Python2.7。我整理了使用Numpy、Scipy的实现、Numba、Cython、Weave和numexpr的实现比较,可以查看hereonnbviewer.我原以为我的Cython和Weave版本是所有版本中最快的,因为它们最接近native代码。但实际上,它们比我的其他版本慢。如何尽可能快地制作这些版本?编辑:wrt最初的笔记本,在所有方法中添加了max技巧,使比较不那么琐碎,更接近我的实际需要。 最佳答案 对于

python - 使用 Cython + MinGW 构建独立应用程序

我正在尝试从Python代码构建独立的应用程序。目前它只是一个“helloworld”程序。我用Cython编译它以获得一个.c文件:"c:\python34\scripts\cython.exe"--embedhello.py这很好用。然后我尝试按如下方式编译和链接生成的.c文件:"c:\mingw32\bin\gcc.exe"-I"c:\python34\include"-L"c:\python34\libs"-lpython34-ohello.exehello.c这给了我很多链接错误:...\cc7PmSei.o:hello.c:(.text+0xe9):undefinedref

python - 在涉及 Cython 的 setup.py 中,如果 install_requires,那么如何从库中导入一些东西?

这对我来说没有意义。如何使用setup.py安装Cython,然后还使用setup.py编译库代理?importsys,imp,os,globfromsetuptoolsimportsetupfromCython.Buildimportcythonize#thisisn'tinstalledyetsetup(name='mylib',version='1.0',package_dir={'mylib':'mylib','mylib.tests':'tests'},packages=['mylib','mylib.tests'],ext_modules=cythonize("mylib_

python - 导入 Cython 生成的 .so 文件时,这个 ImportError 是什么意思?

我正在浏览Cython文档并构建每个示例应用程序。我有点卡在使用C库上。成功构建.so文件并尝试将其导入名为test.py的python文件后,抛出以下错误。$python3.2test.pyTraceback(mostrecentcalllast):File"test.py",line12,infromqueueimportQueueImportError:dlopen(/Users/jeremy/Development/labs/python/cython_lib_wrapper/queue.so,2):Symbolnotfound:_queue_freeReferencedfro

python - Cython 对导入做了什么?

我想创建一个Python扩展,我非常喜欢使用Cython的想法。主要是为了获得更多关于它的知识并利用速度提升(如果有的话)。我已经阅读了相当多的Cython文档,但我(还)不是计算机科学家并且没有深入的知识来理解低级基础知识,因此我提出以下问题的原因:我只是想知道,如果我在我正在开发的Python扩展中使用外部导入(例如,ORM或SQL库或任何其他第3方库)会怎样?Cython是如何处理的?如果这个导入的库/扩展是纯Python的还是编译的,会有区别吗?处理这个问题的正确方法是什么?谢谢。附言。问题以粗体显示。 最佳答案 cytho

python - 为什么cython不编译逻辑或者到 `||`表达式?

例如,这里有一个or表达式:c=f1==0orf1-f0>th编译后的C代码:__pyx_t_24=(__pyx_v_f1==0);if(!__pyx_t_24){}else{__pyx_t_23=__pyx_t_24;goto__pyx_L5_bool_binop_done;}__pyx_t_24=((__pyx_v_f1-__pyx_v_f0)>__pyx_v_th);__pyx_t_23=__pyx_t_24;__pyx_L5_bool_binop_done:;__pyx_v_c=__pyx_t_23;为什么不输出这个?__pyx_v_c=(__pyx_v_f1==0)||((_

python - Cython 函数中的字符串

我想这样做以将字符串传递给Cython代码:#test.pys="Bonjour"myfunc(s)#test.pyxdefmyfunc(char*mystr):cdefintiforiinrange(len(mystr)):#error!len(mystr)isnotthelengthofstringprintmystr[i]#butthelengthofthe*pointer*,ieuseless!但是如评论中所示,这里并没有按预期工作。我发现的唯一解决方法是将长度也作为myfunc的参数传递。这是对的吗?它真的是将字符串传递给Cython代码的最简单方法吗?#test.pys="