我正在尝试为cython中的二元乘积编写一个函数。我以为它起作用的方式是将相等大小的数组从python提供到cython文件中,然后将这些分量相乘并将它们放入我预先创建的矩阵中。
但是,为了创建合适大小的矩阵,我需要先提取输入数组的大小,这不会让我做,而是给我 “不允许在常量表达式中使用” 代替。 我在Cython: creating an array throws "not allowed in a constant expression"中读了答案,它解释了我的错误,但没有给出适合我的解决方案。 什么是正确的方法?
这是我尝试实现的方法:
def dyadicproduct(np.ndarray[long, ndim=1, mode="c"] x not None, np.ndarray[long, ndim=1, mode="c"] y not None):
cdef int xsize
xsize = len(x)
cdef double z[xsize][xsize]
for i in range(xsize):
z[i][i] = x[i]*y[i]
for j in range(xsize):
if j != i:
z[i][j] = x[i]*y[j]
return z