numpy Cython:索引应该类型化以提高访问效率

u1ehiz5o  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(141)

我试图将我的纯python实现移植到Cython,函数签名如下:
所以我的cython函数签名如下:

cpdef cnmi_gradient_2d(double[:, :] jhlog,
                       double[:, :] reflog, double[:, :] warlog,
                       int width, int height):

字符串
我打算在纯python代码中将这些数组作为numpy数组,并将其传递给此函数。在代码中的某个位置,我访问这些数组:

for y in range(height):
    for x in range(width):
         jl = jhlog[x, y]
         rl = reflog[x, 0]
         wl = warlog[0, y]


当我cythonise代码,我得到以下警告:Index should be typed for more efficient access
我不知道我应该用这个做什么?我在这里遵循这个指南:http://docs.cython.org/en/latest/src/userguide/numpy_tutorial.html
但我不知道该怎么解决这个警告。

fhity93d

fhity93d1#

我有同样的问题,它涉及到你可以很容易地解决这个问题,这个错误是,所以你可以看到,有一个性能错误,你可以很容易地修复。
解决这个问题的方法是执行cdef int,然后在for循环中添加变量的名称。在代码中,您应该在外部for循环之前添加以下内容:

cdef int x, y

字符串
请注意,如果它没有帮助,那么你应该在同一个位置这样做:

cdef int x
cdef int y

相关问题