加速numpy矩阵逆

时间:2012-05-02 16:33:46

标签: performance numpy matrix linear-algebra matrix-inverse

我正在使用Numpy / Scipy反转20k矩阵,这很慢。 我试过了:

(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)

但没有看到任何加速。

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

1 个答案:

答案 0 :(得分:6)

这是一个很大的矩阵,反转它会变慢。一些选择:

  • 使用与英特尔MKL相关联的numpy(例如Enthought发行版,或者您可以自己编译),这应该比标准BLAS / ATLAS链接的更快。
  • 如果矩阵足够稀疏,请使用scipy.linalg.sparse。 (但如果只有几个零,这可能会更慢。)
  • 弄清楚你是否真的需要一个倒置矩阵的显式表示来做你正在尝试做的事情 - 通常你可以在没有明确反转它的情况下离开,但是很难说不知道它是什么你正在使用这个矩阵。