我通过向某些变量添加类型将 python 函数转换为等效的 cython。但是,cython 函数产生的输出与原始 python 函数略有不同。
我在这篇文章Cython 中了解到了这种差异的一些原因 :numpy 数组的 unsigned int 索引给出了不同的结果 但是即使我在这篇文章中学到了什么,我仍然无法让 cython 函数产生相同的结果作为蟒蛇之一。
所以我整理了 4 个函数来说明我的尝试。有人可以帮助揭示为什么我对每个函数的结果略有不同吗?以及如何获得返回与 function1 完全相同的值的 cython 函数?我在下面发表一些评论:
%%cython
import numpy as np
cimport numpy as np
def function1(response, max_loc):
x, y = int(max_loc[0]), int(max_loc[1])
tmp1 = (response[y,x+1] - response[y,x-1]) / 2*(response[y,x] - min(response[y,x-1], response[y,x+1]))
tmp2 = (response[y,x+1] - response[y,x-1])
tmp3 = 2*(response[y,x] - min(response[y,x-1], response[y,x+1]))
print tmp1, tmp2, tmp3
return tmp1, tmp2, tmp3
cpdef function2(np.ndarray[np.float32_t, ndim=2] response, np.ndarray[np.float64_t, ndim=1] max_loc):
cdef …Run Code Online (Sandbox Code Playgroud)