6

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

しかし、cythonは不平を言います:

no_of_arrays < Not allowed in a constant expression

この変数を構成するいくつかの方法を試しました。

cdef extern from *:
    ctypedef int const_int "const int"

(より創造的な試みがありました)-しかし、残念ながらそれは機能しません。

助けてください。

4

1 に答える 1

4

配列のリストの代わりに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!

data_array(これは、numpy配列であると想定しています。)

しかし、これはまだあなたがやりたいことを少し推測しています。

于 2012-12-21T03:03:52.810 に答える