Как иметь переменный статический размер массива в C, используя переменную, полученную из Python - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь написать функцию для двоичного продукта в цитоне.Я представлял, как это работает, передавая массивы равных размеров из python в файл cython, который затем умножает компоненты и помещает их в матрицу, которую я создал заранее.

Однако, чтобы создать матрицу подходящего размера, мне нужно сначала извлечь размер входных массивов, что мне не позволяет, а вместо этого выдает «Не разрешено в постоянном выражении».Я прочитал ответ в Cython: создание массива выдает «не допускается в константном выражении» , что объясняет мою ошибку, но не дает решения, которое работает для меня.Как правильно это сделать?

Вот как я пытался это реализовать:

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
...