Python 带指针数组的cython

Python 带指针数组的cython,python,numpy,cython,Python,Numpy,Cython,我有一个python中的numpy.ndarray列表(长度不同),需要快速访问python中的numpy.ndarray。我想一组指针就可以了。我试过: float_type_t* list_of_arrays[no_of_arrays] for data_array in python_list_of_arrays: list_of_arrays[0] = data_array 但cython抱怨说: no_of_arrays < Not allowed in a const

我有一个python中的numpy.ndarray列表(长度不同),需要快速访问python中的numpy.ndarray。我想一组指针就可以了。我试过:

float_type_t* list_of_arrays[no_of_arrays]
for data_array in python_list_of_arrays:
    list_of_arrays[0] = data_array
但cython抱怨说:

no_of_arrays < Not allowed in a constant expression
(有更多创造性的尝试)-但不幸的是,它不起作用


请提供帮助。

为什么不使用numpy对象数组而不是数组列表

我认为您遇到的问题是因为您在堆栈中声明了
list\u of_数组
,并且必须在编译时知道其大小。您可以尝试一些,例如:

from libc.stdlib cimport malloc, free

cdef float_type_t *list_of_arrays = \
    <float_type_t *>malloc(no_of_arrays * sizeof(float_type_t*))

for i in range(no_of_arrays):
    list_of_arrays[i] = &(data_array[i].data)

# don't forget to free list_of_arrays!
来自libc.stdlib cimport malloc,免费
cdef浮点数组类型*数组列表=\
malloc(无数组*sizeof(浮点型)
对于范围内的i(没有数组):
数组列表[i]=&(数据数组[i].data)
#别忘了释放数组的列表!
(这假设
数据\u数组
是一个numpy数组。)


但这仍然只是猜测你想做什么

嗨,Tiago,对我来说至关重要的是,在单独访问这些数组时,我没有任何python开销。目前它们位于一个列表中,我经常需要在它们之间切换,这是一个惊人的时间消耗。干杯
from libc.stdlib cimport malloc, free

cdef float_type_t *list_of_arrays = \
    <float_type_t *>malloc(no_of_arrays * sizeof(float_type_t*))

for i in range(no_of_arrays):
    list_of_arrays[i] = &(data_array[i].data)

# don't forget to free list_of_arrays!