私は、小さな行列 (それらの多く) のマイナーを計算する numpy/cython プログラムを作成しています。
私の現在の関数は次のようになります (行 ii、列 jj までのマット wrt のマイナーを計算します):
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]
かなり時間がかかります。2 次元配列から 1 つの行と 1 つの列を削除するより良い方法はありますか?
あなたの、
cp3028