我想我有一个类似的问题:
我定义了一个包含内存视图的结构:
ctypedef double[:] vector
ctypedef double[:,::1] matrix
ctypedef struct my_struct:
matrix A
vector b
现在我初始化这样一个结构:
cdef my_struct *instance = <my_struct*>malloc(sizeof(my_struct))
instance.A = 2*np.eye(3, dtype='double')
instance.b = np.zeros((3,), dtype='double')
print(matmul(instance.A, instance.B))
现在忽略matmul
(它是一个经过良好测试的 cython 函数来计算矩阵乘法)。我得到的错误是instance.A = ...
分配行的 SIGSEGV (11)。似乎它应该工作(qua类型)。事实上,如果 A 不在结构内,则此分配将起作用。