分配连续内存并分配给指针

时间:2016-04-25 15:19:51

标签: python numpy scikit-learn cython

我正在尝试在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或类似的?

0 个答案:

没有答案