我正在编写一个 numpy/cython 程序来计算小矩阵(很多)的小数。
我当前的函数看起来像(将 mat wrt. 的小数计算到第 ii 行,col jj):
cdef float minor(np.ndarray[DTYPE_t, ndim = 2] mat,int ii,int jj):
rows = range(mat.shape[0])
col = range(mat.shape[0])
del rows[ii]
del col[jj]
cdef np.ndarray[DTYPE_t, ndim = 2] rM = (mat[rows])[:,col]
cdef float val = (-1)**(ii+jj) * np.linalg.det(rM)
return val
经过一些基准测试后,这条线
cdef np.ndarray[DTYPE_t, ndim = 2] rM = (mat[rows])[:,col]
比较费时间。有没有更好的方法从二维数组中删除一行和一列?
你的,
cp3028