4

我正在使用 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)

但没有看到任何加速。

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

4

1 回答 1

7

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

  • 使用与 Intel MKL 链接的 numpy(例如 Enthought 发行版,或者您可以自己编译),这应该比与标准 BLAS/ATLAS 链接的更快。
  • 如果您的矩阵足够稀疏,请使用scipy.linalg.sparse. (不过,如果只有几个零,这可能会更慢。)
  • 弄清楚你是否真的需要一个反转矩阵的显式表示来做你想做的任何事情——通常你可以在不显式反转它的情况下逃脱,但是如果不知道你是什么就很难说用这个矩阵做。
于 2012-05-02T16:47:38.227 回答