草庐IT

cythonized

全部标签

python - Cython C++ 模板

我是cython的新手,我试图包装一个定义为的模板化vector类templatestructVector{}我很难了解cython如何使用模板,尤其是那些以int作为参数的模板。我在文档中读到尚不支持将整数作为模板参数。我该如何正确执行此操作? 最佳答案 对于好奇的人,Cythonwiki展示了如何在Cython中编写模板类:cdefexternfrom""namespace"std":cdefcppclassvector[T]:...此外,多个模板参数被定义为一个列表。要回答OP的问题,可以使用cdefstructVector[

c++ - 如何在 Cython 中声明指针 vector ?

我想声明这样的东西:cdefvector[Node*]list2node(listmy_list):但是Cython给我这个错误:cdefvector[Node*]list2node(listmy_list):^------------------------------------------------------------mod.pyx:77:20:Expectedanidentifierorliteral 最佳答案 您不需要*--vector[Node]应该为Node指针的vector生成代码。使用Cython0.14.1

c++ - Cython c++ 示例无法识别 c++,为什么?

我正在尝试在theCythonC++page构建“在cython中使用c++”的示例,但安装程序似乎无法识别语言c++。从同一页面获取的文件是:矩形.cpp#include"Rectangle.h"usingnamespaceshapes;Rectangle::Rectangle(intX0,intY0,intX1,intY1){x0=X0;y0=Y0;x1=X1;y1=Y1;}Rectangle::~Rectangle(){}intRectangle::getLength(){return(x1-x0);}intRectangle::getHeight(){return(y1-y0)

python - PyArray_Check 使用 Cython/C++ 给出段错误

谢谢大家。我想知道什么是#include的正确方法所有numpyheader以及使用Cython和C++解析numpy数组的正确方法是什么。下面是尝试://cpp_parser.h#ifndef_FUNC_H_#define_FUNC_H_#include#includevoidparse_ndarray(PyObject*);#endif我知道这可能是错误的,我也尝试了其他选项,但没有一个有效。//cpp_parser.cpp#include"cpp_parser.h"#includeusingnamespacestd;voidparse_ndarray(PyObject*obj){

python - 使用 Cython 时如何将一个 C++ 类(引用)传递给另一个类?

我正在尝试使用Cython包装一个C++模块,以便我可以在Python中使用它。该模块有多个类,其中一些类的方法将对另一个类的对象引用作为参数。假设我有一个名为“foo”和“bar”的C++类,然后用cython将它们包装起来:cdefexternfrom"foobar.hpp"namespace"foobar":cdefcppclassfoo:passcdefcppclassbar:voidkungFoo(foo&f)现在我想制作一个包装类,以便我可以在Python中使用它...cdefclasspyFoo:cdeffoo*thisptrdef__cinit__(self):self

python - 使用 Cython 包装 C++ 模板以接受任何 numpy 数组

我正在尝试将用C++编写的并行排序包装为模板,以便将其与任何数字类型的numpy数组一起使用。我正在尝试使用Cython来执行此操作。我的问题是我不知道如何将指向numpy数组数据(正确类型)的指针传递给C++模板。我相信我应该为此使用融合数据类型,但我不太明白如何使用。.pyx文件中的代码如下#importingc++templatecdefexternfrom"test.cpp":voidinPlaceParallelSort[T](T*arrayPointer,intarrayLength)defsortNumpyArray(np.ndarraya):#Thisobviously

c++ - Cython vector 操作

我如何使用remove来自的函数?(或任何其他操作,我想将其与vector一起使用,我尝试使用cdefextern来声明它,但我认为还没有模板函数) 最佳答案 Cython只能合理地链接到一些遵循C调用约定的外部库中的已编译代码。要使用模板函数,您必须编写一个使用特定算法体现的extern"C"包装函数(即,您必须修复模板参数)。 关于c++-Cythonvector操作,我们在StackOverflow上找到一个类似的问题: https://stackove

python - Cython 的新手......似乎无法正确包装枚举

我是Cython的新手,但我想了解更多,因为我希望能够直接从Python调用相当大且复杂的C/C++代码集。我已经能够很好地运行这些示例,甚至能够包装我正在处理的主要项目的一小部分。但是我一直坚持包装枚举。我试图在一个非常简化的示例中阐明我正在尝试的内容。这是myenum.h中的C代码//myenum.henumstrategy{slow=0,medium=1,fast=2};这是我认为可以在pymyenum.pyx中用作wapper的东西#distutils:language=ccdefexternfrom"myenum.h"namespace"myenum":cdefenumstr

c++ - 在 Cython 中处理自定义 C++ 异常

从Cython调用时,我在处理自定义C++异常时遇到了一些问题。我的情况如下:我有一个对所有异常使用CustomLibraryException的库。我想要的基本上是获取错误消息并引发Python错误。userguide有一些提示,但有点不具体。第一种可能性是:cdefintbar()除了+ValueError这会将CustomLibraryException转换为ValueError,但会丢失错误消息。另一种可能性是使用显式转换错误cdefintraise_py_error()cdefintsomething_dangerous()except+raise_py_error我不太了解

Cython Iterate在没有GIL的Numpy阵列列表上

我想迭代具有不同尺寸的Numpy阵列列表,然后将它们传递到不需要GIL的Cython函数:#ahasT1rowsandMcolumnsa=np.array([[0.0,0.1,0.3,0.7],[0.1,0.2,0.1,0.6],[0.1,0.2,0.1,0.6]])#bhasT2rowsandMcolumnsb=np.array([[1.0,0.0,0.0,0.0],[0.1,0.2,0.1,0.6]])#chasT3rowsandMcolumnsc=np.array([[0.1,0.0,0.3,0.6],[0.5,0.2,0.3,0.0],[0.0,1.0,0.0,0.0],[0.0,0.