我无法在任何地方找到专门解决此问题的文档:
以下代码:
cdef int foo( double data ):
# ...
return int( data )
可以写成:
@cython.returns(cython.int)
@cython.locals(data=cython.double)
def foo(data):
return int(data)
但我无法找到相应的声明:
cdef foo(np.ndarray[double] data):
使用@ cython.locals会导致编译错误。
装饰器在cython中声明一个numpy数组的正确方法是什么?
答案 0 :(得分:1)
这似乎没有在任何地方记录,但是内存视图被接受为字符串:
@cython.returns(cython.int)
@cython.locals(data="double[:]")
def foo(data):
return int(data[0])
我认为这通常有效,但numpy数组的挑战是你必须cimport numpy
我认为纯Python代码是不可能的。
答案 1 :(得分:0)
我在Google网上论坛中找到了以下答案:
尝试使mySum成为cpdef函数并装饰.pxd中的函数 使用numpy数组声明语法的cython.locals文件。
您可以使用.pxd文件和@ cython.locals批注来声明 缓冲类型。