我想用 nogil 在 Cython 并行循环中分配 numpy 数组数组(将元素作为数组的数组)。我使用 dtype 作为对象,以便能够将 numpy 数组分配为数组元素。它在 Cython 中工作,无需并行化。但是通过使用并行,它给出了这个错误信息:
没有 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[:]' 分配给 'double'”