Matrizes são invertidas com numpy.linalg.inv:
Ai = np.linalg.inv(A)
Ai
array([[-2. , 1. ],
[ 1.5, -0.5]])
A matriz inversa A−1 é tal que
A−1A=AA−1=I,onde I é a matriz identidade
I=[1001].Ai @ A
array([[1.00000000e+00, 0.00000000e+00],
[1.11022302e-16, 1.00000000e+00]])
A menos de erros numéricos, essa parece ser a resposta correta (valores da ordem de 10−16 são praticamente zero). Vamos checar isso por comparação da multiplicação acima com a matriz identidade (usando a função numpy.allclose, que compara arrays a menos de erros numéricos):
np.allclose(Ai @ A, np.eye(2))
True
Lembre-se: nem toda matriz possui inversa! Uma maneira de identificar se uma matriz possui inversa é com o cálculo do rank da mesma (numpy.linalg.matrix_rank), que deve ser igual à dimensão do array:
np.linalg.matrix_rank(A)
2
A.ndim
2