without una tutorial transpuesta producto matriz matrices inversa determinant como calcular python numpy matrix

python - tutorial - Inverso de una matriz usando numpy



python matrices tutorial (4)

¿Qué hay de numpy.linalg.inv ?

por ejemplo: my_inverse_array = inv (my_array)

Me gustaría usar numpy para calcular el inverso. Pero me aparece un error:

''numpy.ndarry'' object has no attribute I

Para calcular el inverso de una matriz en numpy, digamos matriz M, debería ser simplemente: print MI

Aquí está el código:

x = numpy.empty((3,3), dtype=int) for comb in combinations_with_replacement(range(10), 9): x.flat[:] = comb print x.I

Supongo que este error ocurre porque x ahora es plano, por lo I el comando '' I '' no es compatible. ¿Hay una solución para esto?

Mi objetivo es imprimir la MATRIZ INVERSA de cada posible combinación de matriz numérica.


El atributo I solo existe en objetos de matrix , no en ndarray . Puede usar numpy.linalg.inv para invertir matrices:

inverse = numpy.linalg.inv(x)

Tenga en cuenta que, por la forma en que está generando matrices, no todas serán invertibles. Necesitarás cambiar la forma en que estás generando matrices u omitir las que no son invertibles.

try: inverse = numpy.linalg.inv(x) except numpy.linalg.LinAlgError: # Not invertible. Skip this one. pass else: # continue with what you were doing

Además, si desea pasar por todas las matrices 3x3 con elementos extraídos de [0, 10), desea lo siguiente:

for comb in itertools.product(range(10), repeat=9):

en lugar de combinations_with_replacement , o te saltearás matrices como

numpy.array([[0, 1, 0], [0, 0, 0], [0, 0, 0]])


Otra forma de hacerlo es usar la clase de matrix numpy (en lugar de una matriz numpy) y el atributo I Por ejemplo:

>>> m = np.matrix([[2,3],[4,5]]) >>> m.I matrix([[-2.5, 1.5], [ 2. , -1. ]])


Inverso de una matriz usando python y numpy:

>>> import numpy as np >>> b = np.array([[2,3],[4,5]]) >>> np.linalg.inv(b) array([[-2.5, 1.5], [ 2. , -1. ]])

No todas las matrices se pueden invertir. Por ejemplo, las matrices singulares no son Invertables :

>>> import numpy as np >>> b = np.array([[2,3],[4,6]]) >>> np.linalg.inv(b) LinAlgError: Singular matrix

Solución al problema de la matriz singular:

intente capturar la excepción Singular Matrix y continúe hasta que encuentre una transformación que cumpla con su criterio anterior Y también sea invetable.

Intuición y ELI5 alrededor de la inversión de la matriz y por qué a veces no se puede hacer:

Imagínese un proyector de cine que ilumina con luz brillante una película sobre una pared blanca, los píxeles de la película condensada se "proyectan" a los píxeles de la pared.

Detengo la proyección de la película en un solo cuadro, y ves los píxeles en la pared blanca y te pido que regeneres la película que lo proyectó. Eso es fácil, solo toma el inverso de la matriz que realizó la proyección. Inverso de una matriz deshace la proyección.

Imagine ahora si el proyector estaba dañado y se proyectan múltiples píxeles en la película en el mismo lugar de la pared. Luego te pedí que "deshaga esta operación con una matriz inversa". Usted dice: "No puedo, la información fue destruida en la proyección, no puedo volver a donde estábamos porque la matriz es Singular o degenerada".

Una matriz utilizada para transformar datos en otros datos es invegable solo si el proceso puede revertirse sin pérdida de información. Si su matriz no se puede invertir, quizás esté definiendo su proyección usando una metodología de adivinar y verificar en lugar de usar un proceso que garantice una transformación no corruptora.

Fuente:

numpy.linalg.inv