我想在cdef
函数中创建一个2D数组,其中每个维度中的元素数量取决于传递给函数的参数。例如:
cdef int[:,:] c_volumecheck(int n):
cdef:
const int comb = 2**n
const int nt = n
int match[comb][nt]
size_t i,j
# initialize values
for i in range(comb):
for j in range(n):
match[i][j] = 0
return match
然而,分配给comb
和nt
一个常量表达式似乎不起作用,因为我在行int match[comb][nt]
中得到错误“常量表达式中不允许”。手动提供相应的值有效(match[8][3]
,例如n=3
)。但是,这不是一个选项,因为这些值在程序期间会发生变化。
第二件事是,我似乎不明白如何将此数组返回到同一cdef
脚本中的另一个def
或.pyx
函数:int[:,:]
似乎与我想要初始化的二维数组不对应。