gpt4 book ai didi

python - 带 ndarray 的 ctypedef 引发 "Buffer types only allowed as function local variables"

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:07 24 4
gpt4 key购买 nike

我想在特定的 numpy 结构上定义一个类型。

cimport numpy as np
ctypedef np.ndarray[np.int32_t, ndim=1] XX_t

但 cython 编译失败并出现错误:

cimport numpy as np
ctypedef np.ndarray[np.int32_t, ndim=1] XX_t
^
------------------------------------------------------------

x.pyx:2:0: Buffer types only allowed as function local variables

我查了一下,cdef上有解释

我不明白为什么 ctypedef 仍然有这样的错误。

最佳答案

如错误消息所述,numpy 缓冲区类型 (np.ndarray...) 只能用于局部变量/函数参数,不能用于 typedef。可能没有根本原因这行不通,只是没有实现。 Github 问题在这里: https://github.com/cython/cython/issues/754

正如@Pierre 在评论中指出的那样,cython 现在支持类型化内存 View 的替代语法 (int[:]),它似乎可以与 typedef 一起使用。

%%cython
ctypedef int[:] XX_t

def my_fun(XX_t arr):
return arr[0]

my_fun(np.array([1,2,3], dtype=int))
Out[6]: 1

关于python - 带 ndarray 的 ctypedef 引发 "Buffer types only allowed as function local variables",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com