[SciPy-user] Vectorized Approach to Matrix Inversion

Josh Lawrence josh.k.lawrence@gmail....
Wed Nov 12 11:23:26 CST 2008


Hey all,

I have a NxNxP array. Let's call it foo. foo[:,:,p] contains a matrix  
I want to invert (or to solve in the Ax = b fasion). Is there a pure  
python/scipy way to compute an array bar without loops such that it  
would be equivalent to the following?

import scipy.linalg as la
import numpy as np

bar = np.zeros((N, N, P)) + 0j

for i in range(0,P):
	bar[:,:,i] = la.inv(foo[:,:,i])


Or in the Ax = b sense (with b an NxP array, and A NxNxP):

import scipy.linalg as la
import numpy as np

x = np.zeros((N, P)) + 0j

for i in range(0,P):
	x[:,i] = la.solve(A[:,:,i], b[:,i])

I realize I could write some fortran code to do this or even use  
cython, but it would be nice if I could do this without needing to  
compile some extra code. As a summary, does anyone know how to compute  
the above (either example, but preferably both) without using loops?

Cheers,

Josh


More information about the SciPy-user mailing list