【发布时间】:2012-07-26 06:14:00
【问题描述】:
我有一个在常规 Python 中创建的浮点值数组,我想将其传递给底层 C 函数前面的 cython 函数。 C 函数要求数组作为浮动指针传递,如下所示:
void setOverlays(const float * verts);
cython 包装器如下所示:
def set_overlays(verts):
setOverlays(verts)
如何将 verts 制作成 cython 数组? 我认为这可能有效:
cdef float * cVerts = [v for v in verts]
但不幸的是,生成的值是一个 Python 对象,在这种情况下自动转换不起作用。
ctypes 中的等效表达式(有效)是:
cVerts = (c_float * len(verts))()
for i in range(len(verts)):
cVerts[i] = verts[i]
setOverlays(cast(byteref(cVerts), POINTER(c_float)))
我正在尝试实现同样的目标,但在 cython 中
提前致谢!
【问题讨论】:
-
使用 numpy 数组而不是 Python 列表允许 Cython 直接访问它。 docs.cython.org/src/tutorial/numpy.html