Cython如何制作多维字符串矩阵?

时间:2016-02-14 12:06:16

标签: cython

Cython如何制作多维字符串矩阵?任何人都知道吗?谢谢 我有以下代码,但没有工作:

def make_matrix(size_t nrows, size_t ncols):
    cdef char *mat = <char*>malloc(nrows * ncols * sizeof(char))
    cdef char[:, ::1] mv = <char[:nrows, :ncols]>mat
    cdef cnp.ndarray arr = np.asarray(mv)
    return arr

1 个答案:

答案 0 :(得分:0)

假设您需要一个数组nrows字符串,每个ncols长,您可以这样做:

np.zeros((nrows,),dtype=('S',ncols))

这会创建一个所需格式的空numpy数组,并且不需要调用专门的Cython功能。

不使用malloc尝试在Cython中执行此操作的充分理由是内存永远不会被释放(因此除非您自己释放内存,否则您将会发生内存泄漏)。很难知道什么时候需要释放它。

作为替代方案(如果您出于某种原因确实需要malloc),您可以改为使用int8,这与char的大小相同,并且应该是可互换的。< / p>