在random_stuff_printer.pyx文件中,我有一个cdef
函数,看起来像这样:
cdef np.ndarray[np.float64_t, ndim=4] randomizer():
return np.random.random((4, 4, 4, 4))
然后我有一个def
函数看起来像这样,在同一个random_stuff_printer.pyx中:
def random_printer():
random_stuff = randomizer()
print random_stuff
我编译文件,并调用random_printer,但是我收到以下错误:
TypeError: Cannot convert random_stuff_printer._memoryviewslice to numpy.ndarray
如何解决此问题?
答案 0 :(得分:2)
我认为这是让def
,cdef
和cimport
和import
保持一致的问题。这里有一些适合我的代码:
import numpy as np
cimport numpy as cnp
cdef cnp.ndarray[cnp.float64_t, ndim=4] randomizer():
return np.random.random((4, 4, 4, 4))
def random_printer():
cdef foo = randomizer()
print(foo)
例如,请参阅此笔记本:http://nbviewer.ipython.org/gist/arokem/6fa00ceb17e16c367c8a