Я пытаюсь написать функцию для двоичного продукта в цитоне.Я представлял, как это работает, передавая массивы равных размеров из 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