Inverse of a matrix using numpy
matrix, numpy, python
Solution
The `I` attribute only exists on `matrix` objects, not `ndarray`s. You can use `numpy.linalg.inv` to invert arrays:
inverse = numpy.linalg.inv(x)
Note that the way you're generating matrices, not all of them will be invertible. You will either need to change the way you're generating matrices, or skip the ones that aren't invertible.
try:
inverse = numpy.linalg.inv(x)
except numpy.linalg.LinAlgError:
# Not invertible. Skip this one.
pass
else:
# continue with what you were doing
Also, if you want to go through all 3x3 matrices with elements drawn from [0, 10), you want the following:
for comb in itertools.product(range(10), repeat=9):
rather than `combinations_with_replacement`, or you'll skip matrices like
numpy.array([[0, 1, 0],
[0, 0, 0],
[0, 0, 0]])
Problem
I'd like to use numpy to calculate the inverse. But I'm getting an error: ``` 'numpy.ndarry' object has no attribute I ``` To calculate inverse of a matrix in numpy, say matrix M, it should be simply: `print M.I` Here's the code: ``` x = numpy.empty((3,3), dtype=int) for comb in combinations_with_replacement(range(10), 9): x.flat[:] = comb print x.I ``` I'm presuming, this error occurs because x is now flat, thus '`I`' command is not compatible. Is there a work around for this? My goal is to print the INVERSE MATRIX of every possible numerical matrix combination.