Как преобразовать массив python в массив cython?

У меня есть массив значений с плавающей запятой, созданный в обычном Python, который я хочу передать функции cython, которая выступает за базовую функцию C. Функция C требует, чтобы массив передавался в виде плавающего указателя, как в :

void setOverlays(const float * verts);

. обертка cython выглядит так:

def set_overlays(verts):
    setOverlays(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

Заранее спасибо!

9
задан Kiril 27 July 2012 в 03:33
поделиться