我在任何地方都找不到任何专门解决这一问题的文档:
下面的代码:
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中,decorator声明numpy数组的正确方法是什么?
2条答案
按热度按时间ecr0jaav1#
这似乎没有任何文档记录,但memoryviews被接受为字符串:
我想这通常是可行的,但是numpy数组的挑战是你必须
cimport numpy
,我认为这在纯Python代码中是不可能的。eagi6jfj2#
我在Google网上论坛中找到了以下答案:
尝试将mySum作为cpdef函数,并使用numpy数组声明语法用cython.locals修饰. pxd文件中的函数。
谷歌集团
可以使用. pxd文件和@cython.locals注解来声明缓冲区类型。
谷歌集团