我想在nogil的Cython并行循环中分配numpy数组(带元素为数组的数组)数组。我使用dtype作为对象,能够将numpy数组指定为数组元素。它在Cython中无需并行化。但是通过使用parallel,它会显示以下错误消息:
不允许在没有gil的情况下分配Python对象
我确实尝试过不同的方法在cdef中声明它,但它仍然无效。我不确定Cython并行化是否支持数组数组。如果是这样,那么声明类型并赋值的最佳方法是什么。
cdef np.ndarray[ dtype= object, ndim=2] ST_matrix=np.zeros( 10, dtype= [('f1', '(4,)float64'), ('f2', '(4,)float64')])
错误消息:
不允许在没有gil的情况下分配Python对象
cdef double [:,:] ST_matrix
ST_matrix=np.zeros( I, dtype=[('f1', '(4,)float64'), ('f2', '(4,)float64')])
错误消息:
"无法分配类型' double [:]'到'加倍"