【NumPy入門】行列の対角要素を取り出したり対角行列が作れるnp.diag

こんにちは!インストラクターのフクロウです!

この記事では、行列の対角要素を取り出したり、対角行列を作ったりできるnp.diag関数を紹介しますよ!

  • 対角要素って何?
  • 対角行列って何?
  • np.diag関数ってどうやって使うの?

って思った方は必見です!この記事を読めば

  • 対角要素とは
  • 対角行列とは
  • np.diagの使い方
  • 機械学習ではどう使われるのか

などがわかりますよ!

使い方は簡単!この機会に覚えちゃいましょう!

対角要素を取り出す方法

そもそも対角要素って何?

行列の対角要素って何?って思った方!

例えば1~16の要素が入った4×4行列aを想像してください。

このaの主対角要素は、下の図の緑色の要素のことです!

np.diagで対角要素を得る

そしてこれをNumPyの関数で計算するには、以下のように「np.diag」を使います!

※これ以降、IPythonを使ってプログラムを実行していきますよ!

ここで、k=0というパラメータがありますね。

これは主対角要素を指定しています。

kパラメータを操作するとどうなる?

np.diag関数のkの値を変えると、正の値ならば右上負の値ならば左下対角要素を取り出します

ちなみにこの関数は、メソッドとしても提供されています。

対角行列を作る方法

対角行列って何?

対角行列とは、対角要素以外は0で埋められた行列です。

これにまつわるもっと深い話が知りたい場合は、以下の解説記事が読みやすいですよ。

対角行列の様々な性質(行列式や固有値など)

np.diagを使った対角行列の作り方

np.diagにベクトルを渡すと対角行列を作ってくれます。

試してみましょう!

[1,2,3,4]というベクトルの要素数に合わせた対角行列ができていますね!

kパラメータを操作するとどうなる?

対角行列を作るときも、kパラメータを操作することで、与えたベクトルがどこの対角要素なのかを指定できますよ!

機械学習ではどこで使うの?

対角行列や対角要素という言葉は線形代数の言葉です。

scikit-learnなどでPCA(主成分分析)をやったことがある人なら、対角化という言葉を聞いたことがあるかもしれません。

PCAなどの次元圧縮手法で近い操作が頻出するので、np.diagに限らず行列を操作する関数は覚えておくと機械学習の理論を学ぶときに役立ちますよ!

まとめ

この記事では、行列の対角要素を取り出したり、対角行列を作ったりできる関数「np.diag」を紹介しました。

線形代数的な操作は機械学習を学ぶ上で避けては通れない基本技術です。

このような基本的な操作から学んでいって、ただ機械学習ライブラリを使うだけじゃないしっかりとした理解ができるようになりましょうね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説