Wol*_*orf 5 python numpy cython
我在python中有一个numpy.ndarrays(具有不同长度)的列表,需要能够非常快速地访问python中的那些.我认为一系列指针可以解决这个问题.我试过了:
float_type_t* list_of_arrays[no_of_arrays]
for data_array in python_list_of_arrays:
list_of_arrays[0] = data_array
Run Code Online (Sandbox Code Playgroud)
但是cython抱怨:
no_of_arrays < Not allowed in a constant expression
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种方法来满足这个变量:
cdef extern from *:
ctypedef int const_int "const int"
Run Code Online (Sandbox Code Playgroud)
(有更多的创造性尝试) - 但不幸的是它不起作用.
请帮忙.
为什么不使用 numpy 对象数组而不是数组列表?
我认为你遇到的问题是因为你list_of_arrays在堆栈中声明,并且它的大小必须在编译时已知。您可以尝试一些动态分配,如下所示:
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!
Run Code Online (Sandbox Code Playgroud)
(这假设data_array是一个 numpy 数组。)
但这仍然是猜测你想要做什么。
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |