Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)

投稿日:2022年8月30日 更新日:

 

<目次>

(1) Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)
 (1-1) 概要
 (1-2) STEP1:Numpyのインストール
 (1-3) STEP2:行列の定義
 (1-4) STEP3:行列の演算
 (1-5) 補足:ベクトルの場合
 (1-6) 内積とは?

(1) Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)

(1-1) 概要

Pythonで「行列」を表現しよと思ったら、リストと呼ばれるデータ型を使います。
例えば、次のような I = [[1,0],[1,0]]、A = [[1,2],[3,4]]はそれぞれ2行×2列の行列とみなす事ができます。更に言うとIは「単位行列」になっています(対角成分=1&それ以外=0)。
 
<入力>行列
I = [[1,0],[0,1]]
A = [[1,2],[3,4]]
この時、IとAの和を計算しようとI+Aとすると、普通にやるとリストが連結された結果(NG)が返ってきてしまいます。
 
<出力>行列の足し算(NG例)
[[1, 0], [0, 1], [1, 2], [3, 4]]
(図100)

これを防ぎ、正しく行列の計算を行う方法はいくつかありますが、今回はNumpyを用いた方法をご紹介します。Numpyライブラリは数値計算や科学技術計算で非常に良く使われているライブラリで、線形代数の演算なども効率良く行う事ができるのでオススメです。

(表)
No 評価 概要
方法① forループで各要素を足し合わせていく
方法② 行列の和を計算する関数(例:add_matrix())を予め準備して、add_matrix(I,A)のように利用する
方法③ Numpyライブラリを使用する

(1-2) STEP1:Numpyのインストール

(コマンド)
> pip install numpy
 
(結果例)
Collecting numpy
  Downloading numpy-1.22.3-cp38-cp38-win_amd64.whl (14.7 MB)
     |████████████████████████████████| 14.7 MB 1.7 MB/s
Installing collected packages: numpy
Successfully installed numpy-1.22.3
 
(図111)

(1-3) STEP2:行列の定義

行列を定義するためには「np.array([[N,N],[N,N]])」のように定義します(Nは要素)。
I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
 
(図121)

(1-4) STEP3:行列の演算

あとは、通常の変数の演算と同じような形で四則演算や、行列の演算(内積など)を計算できます。

・①「+」:足し算

(例)

I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
print(I+A)
(結果)

[[2 2]
 [3 5]]
 
(図131)

・②「-」:引き算

(例)
I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
print(A-I)
(結果)

[[0 2]
 [3 3]]
(図132)

・③「*」:各要素同士の掛け算

⇒あまり使う場面はない??
(例)
I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
print(I*A)
(結果)

[[1 0]
 [0 4]]
(図133)

・④「/」:各要素同士の割り算

⇒あまり使う場面はない??
 
(例)
I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
print(I/A)
(結果)
[[1.   0.  ]
 [0.   0.25]]
(図134)
 
・⑤「numpy.dot(X,Y)」:ベクトルの「内積」 ≒ 行列の「積」
 
行列の「積」は、次のように計算されます
(行、列の組み合せ毎にベクトルの内積計算を行う)
 
(図136①)

今回の例で計算
(図136②)

(例)

I = np.array([[1,0],[0,1]])
A = np.array([[1,2],[3,4]])
print(np.dot(I,A))
 
(結果)
[[1 2]
 [3 4]]
(図135)
 

(1-5) 補足:ベクトルの場合

「ベクトル」を表現しよと思ったら、リストで1行×N列のデータを使います。
 
(例)
a = np.array([0,1,0])
b = np.array([1,2,3])
ベクトルも行列と同様の方法で、四則演算や内積を取る事ができます。
 
(図141)

(1-6) 内積とは?

内積の本質は「ベクトルの積」である。
ベクトルの積を考える際にネックとなるのが「方向がある」点です。
内積の発想は「方向を揃える」ことで掛け算を可能にするというもの。
そのためにcosθを掛ける事で、向きを揃えて掛け算可能にしている。
(図151)
(図152)

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

画面設計の項目一覧の書き方とサンプルのご紹介

  <目次> (1) 画面設計の項目一覧の書き方とサンプルのご紹介  (1-1) 項目一覧とは?  (1-2) 項目一覧の書き方は?  (1-3) 項目一覧のサンプル (1) 画面設計の項目 …

Slackで自動返信の投稿をするボットをPythonで作る手順(ngrokでローカルPCをサーバーに見立てて)

  <目次> (1) Slackで自動返信の投稿をするボットをPythonで作る手順(ngrokでローカルPCをサーバーに見立てて)  (1-1) STEP1:Slackアプリの新規作成&権 …

Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法について

  <目次> (1) Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法につ …

no image

プロセスマイニングの進め方や流れについてご紹介

  <目次> (1) プロセスマイニングの進め方や流れについてご紹介  (1-1) プロセスマイニングの流れ(Celonisの例)  (1-2) 参考 (1) プロセスマイニングの進め方や流 …

SlackのAPIでメッセージを投稿する方法(Pythonのサンプルコード付き)

  <目次> (1) SlackのAPIでメッセージを投稿する方法(Pythonのサンプルコード付き)  (1-1) STEP1:Slackでボット用のアプリを作成  (1-2) STEP2 …

  • English (United States)
  • 日本語
Top