我想知道为什么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
作为指数?这到底是怎么回事?
问题是不能用这种方式访问数组
H[<int>1,i,j] = 42
写作
H[<int>1][i][j] = 42
解决了这个问题。