加速numpy矩阵逆

Jen*_*sen 3 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)
Run Code Online (Sandbox Code Playgroud)

但没有看到任何加速.

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

Dou*_*gal 6

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

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