Jensen
Jensen

Reputation: 1733

Speed up numpy matrix inverse

I am using Numpy/Scipy to invert a 20k matrix, it's slow. I tried:

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

but didn't see any speedup.

Is there any other way to speed this up?

Upvotes: 4

Views: 4288

Answers (1)

Danica
Danica

Reputation: 28856

This is a big matrix, and inverting it is going to be slow. Some options:

  • Use a numpy linked against Intel MKL (e.g. the Enthought distribution, or you can compile it yourself), which should be faster than one linked against standard BLAS/ATLAS.
  • If your matrix is sufficiently sparse, use scipy.linalg.sparse. (This will probably be slower if there are only a few zeros, though.)
  • Figure out if you really need an explicit representation of the inverted matrix to do whatever it is you're trying to do with it – often you can get away without explicitly inverting it, but it's hard to tell without knowing what it is you're doing with this matrix.

Upvotes: 8

Related Questions