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
答案 0 :(得分:0)
假设您需要一个数组nrows
字符串,每个ncols
长,您可以这样做:
np.zeros((nrows,),dtype=('S',ncols))
这会创建一个所需格式的空numpy数组,并且不需要调用专门的Cython功能。
不使用malloc
尝试在Cython中执行此操作的充分理由是内存永远不会被释放(因此除非您自己释放内存,否则您将会发生内存泄漏)。很难知道什么时候需要释放它。
作为替代方案(如果您出于某种原因确实需要malloc
),您可以改为使用int8
,这与char
的大小相同,并且应该是可互换的。< / p>