2012-05-02 116 views
2

我使用Numpy/Scipy來倒置20k矩陣,它很慢。 我想:加快numpy矩陣逆

(1) M_inv = M.I 

(2) Ident = np.Identity(len(M)) 
    M_inv = scipy.linalg.solve(M, Ident) 

(3) M_inv = scipy.linglg.inv(M) 

,但沒有看到任何加速。

有沒有其他方法可以加快速度?

回答

6

這是一個很大的矩陣,反轉會變慢。一些選項:

  • 使用與英特爾MKL鏈接的numpy的(例如在Enthought分佈,或者你可以自己編譯),這應該是一個比對標準BLAS/ATLAS連接速度更快。
  • 如果您的矩陣足夠稀疏,請使用scipy.linalg.sparse。 (但是,如果只有幾個零,這可能會更慢)
  • 找出是否真的需要顯式表示倒置矩陣來做任何你想要做的事 - 通常你可以在沒有明確反轉的情況下離開,但如果不知道你在用這個矩陣做什麼,很難說清楚。