Cython: 无效的索引类型'int'

问题描述 投票:0回答:1

我想知道为什么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 作为指数?这到底是怎么回事?

c++ arrays python-3.x int cython
1个回答
0
投票

问题是不能用这种方式访问数组

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

写作

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

解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.