numpyで逆行列を求めたい

Python, ML, Math15 January 2021

Pythonで逆行列を求めたい時にnumpyでさくっとできるようメモ

関数定義

ndarrayを引数にとり、その逆行列を返却する関数を定義します

import numpy as np

def to_inv(matrix: np.ndarray) -> np.ndarray:
    return np.linalg.inv(matrix)
p = np.array([
    [-1, 1],
    [4, 1]
])

to_inv(p)
> array([[-0.2,  0.2],
       [ 0.8,  0.2]])

分数で取得したい

要件によっては分数で逆関数が欲しい場合もあるかもしれません。

import fractions
np.set_printoptions(formatter={'all':lambda x: str(fractions.Fraction(x).limit_denominator())})

np.set_printoptionsで表示形式を変更します。

to_inv(p)
> array([[-1/5, 1/5],
       [4/5, 1/5]])

あー、数学難しいなあ

tags: Python, ML, Math