如何使用派生自Python的变量在C中具有可变的静态数组大小

时间:2019-01-23 19:34:16

标签: static cython

我正在尝试为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

0 个答案:

没有答案