Как преобразовать массив 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
Заранее спасибо!