我正在尝试在sklearn
代码库中实现一些功能,其中我的功能与此类似:
cdef foo(double** bar_ptr): …
这样被称为
cdef double* bar_ptr = NULL
foo(&bar_ptr)
# … do something with bar_ptr
所以,在foo
里面我需要以某种方式分配内存然后通过指针返回它。我试过了
cdef foo(double** bar_ptr):
cdef np.ndarray[double, ndim=1, mode='c'] bar = np.zeros(3)
bar_ptr[0] = <double *>bar.data
编译但在运行时产生错误:
cdef np.ndarray[double, ndim=1, mode='c'] bar = np.zeros(3)
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
我不知道因为我的条形图是1维的,还是不是?
然而,我完全不相信这是正确的做法。如何解决这个问题,最好不要诉诸malloc
或类似的?