Cython: недопустимый тип индекса 'int' - PullRequest
0 голосов
/ 06 мая 2020

Мне интересно, почему cython жалуется на использование int в качестве индексов в массивах.

У меня очень длинная функция, но есть массив, на который жалуется cython, он реализован так:

cdef double F(double[:,:] arguments):
    cdef double H[2][3][3]
    H[0][0][:] = [0, 0, 0]; H[0][1][:] = [0, 0, 0]; H[0][2][:] = [0, 0, 0]
    H[1][0][:] = [0, 0, 0]; H[1][1][:] = [0, 0, 0]; H[1][2][:] = [0, 0, 0]
    cdef int i = 0
    cdef int j = 0

    # ...

    # the following line causes the error

    H[<int>1,i,j] = 42

    # ...

Я получаю ошибку Invalid index type '(int, int, int)'

Это правда, что я не могу использовать int в качестве индекса? Что здесь происходит?

1 Ответ

0 голосов
/ 06 мая 2020

Проблема в том, что таким образом нельзя получить доступ к массиву

H[<int>1,i,j] = 42

Запись

H[<int>1][i][j] = 42

решает проблему.

...