Cython:应输入索引以提高访问效率

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

我正在尝试将我的纯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

但不确定我应该做什么来解决这个警告。

python numpy cython cythonize
1个回答
0
投票

我遇到了同样的问题,它与您可以轻松修复此问题相关,并且此错误是这样您可以看到那里存在一个可以轻松修复的性能错误。

解决这个问题的方法是先执行 cdef int ,然后执行 for 循环中的变量名称。 在您的代码中,您应该在外部 for 循环之前添加以下内容: cdef int x, y

请注意,如果这没有帮助,那么您应该在同一位置执行此操作: cdef 整型 x cdef int y

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