コラム 人と星とともにある数学 数学

NumPyで行列 回帰分析 その2|Pythonで数学を学ぼう! 第23回

NumPyで行列

前回、回帰分析プログラムの要のコードは次の1行であることを紹介しました。

>>>  # 回帰係数の計算
>>>  theta = np.linalg.inv(X.T @ X) @ X.T @ y

ここに行列の計算のエッセンスが詰まっています。行列の積、転置行列そして逆行列です。さっそく行列の基本をPythonとともにみていきましょう。

ベクトルと同じく行列もNumPyライブラリを用いることで定義できます。最初にこれをインポートします。

>>>  import numpy as np

行列の定義

さっそく配列を定義するnp.array()関数を使ってみます。

ベクトルの場合には、列ベクトル・行ベクトルの扱いに独特なクセがあることに注意する必要がありますが、行列はクセなく定義できます。

以下グーグル・コラボラトリーの出力結果を使って説明していきます。

このように行列の行ごとを配列[]としてnp.array([])に渡すことで行列が定義されます。コードの書き方は[1行],[2行]とつなげるよりも図のように行ごとに改行して書く方が行列の成分が見やすくできます。

グーグル・コラボラトリーの場合、定義した行列A2をそのまま実行するとarray()の形で出力されます。print文に渡してあげれば行列らしく出力されます。

以下B2、A3、A4と行列を定義しておきます。

行列の和・差

行列の和・差は成分ごとの和・差を計算します。数の計算と同様に「+」「-」記号を用いて計算します。

行列の実数倍

行列の実数倍とは2A2のように行列の前にスカラーを書いて表します。行列Aのすべての成分を2倍する計算です。Pythonでは数の乗算「*」を使います。

行列の積

ここまで行列の和・差・実数倍は分かりやすい計算(演算の定義)です。行列は積の定義が独特です。

次のように行ベクトルと列ベクトルの積が1つの数(スカラー)となる計算が基本です。ここでそれぞれのベクトルの要素数が等しい必要があることに注意します。等しくない場合には積が定義されません(計算できない)。

2次正方行列(2×2行列)と3次正方行列(3×3行列)の場合の積の結果は次の図のようになります。この結果を公式として覚えるよりは、上記の行ベクトル×列ベクトルの計算法則を繰り返し実行することを理解します。

NumPyでは行列の積の計算方法は数種類あります。ここでは「@」を使った方法だけを紹介しておきます。

行列の冪乗

行列の冪乗は「@」を繰り返し用いることで計算できます。A2の2乗、3乗はそれぞれA2 @ A2、A2 @ A2 @ A2と計算できます。

NumPyには行列の冪乗計算のためのnp.linalg.matrix_power()関数が用意されています。第1引数に正方行列(累乗は正方行列だけが可能)そして第2引数に乗数を渡します。

特殊な演算

通常の四則演算で用いられる乗法「*」と冪乗「**」は、NumPyの行列の演算では次のような特殊な演算に用いられます。

 

以上のグーグル・コラボラトリーのファイル「第23回NumPyで行列.ipynb」は次からダウンロードできます。
https://drive.google.com/file/d/1CxjmAr645hOH70jjZUOJNwpMrQ_UWsOd/view?usp=sharing

このファイルはダブルクリックしても動きません。グーグル・コラボラトリーを起動してこのファイルを開くことでブラウザ上で実行できます。

以上、行列の積までの演算をPythonコードとともに紹介しました。

今回、冪乗で使ったnp.linalg.matrix_power()関数のmatrixは行列、powerは冪乗を表すのは文字の通りです。linalgは線形代数linear algebraの略です。

行列の計算はまだまだ続きます。次回はmatrixの和訳「行列」という用語にフォーカスしてみます。

  • この記事を書いた人
  • 最新記事

桜井進(さくらいすすむ)様

1968年山形県生まれ。 サイエンスナビゲーター®。株式会社sakurAi Science Factory 代表取締役CEO。 (略歴) 東京工業大学理学部数学科卒、同大学大学院院社会理工学研究科博士課程中退。 東京理科大学大学院非常勤講師。 理数教育研究所Rimse「算数・数学の自由研究」中央審査委員。 高校数学教科書「数学活用」(啓林館)著者。 公益財団法人 中央教育研究所 理事。 国土地理院研究評価委員会委員。 2000年にサイエンスナビゲーターを名乗り、数学の驚きと感動を伝える講演活動をスタート。東京工業大学世界文明センターフェローを経て現在に至る。 子どもから大人までを対象とした講演会は年間70回以上。 全国で反響を呼び、テレビ・新聞・雑誌など様々なメディアに出演。 著書に『感動する!数学』『わくわく数の世界の大冒険』『面白くて眠れなくなる数学』など50冊以上。 サイエンスナビゲーターは株式会社sakurAi Science Factoryの登録商標です。

-コラム, 人と星とともにある数学, 数学
-

© 2022 株式会社インフォマティクス