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) システムの品質評価を実施する際の観点 …

クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)

<目次> (1) クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)  (1-1) コンテナ  (1-2) サービスメッシュ  (1-3) …

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

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

Confluenceでサイドバーを設置し、スクロールバーに追従させる方法

  <目次> (1) Confluenceでサイドバーを設置し、スクロールバーに追従させる方法  (1-0) やりたいこと  (1-1) 設定手順  (1-2) トライ&エラー備忘メモ:HT …

no image

ソフトマックス関数の微分の導出をご紹介

  <目次> (1) ソフトマックス関数の微分の導出をご紹介  (1-1) ソフトマックス関数とは?  (1-2) ソフトマックス関数の微分(一般式)  (1-3) ソフトマックス関数の微分 …

  • English (United States)
  • 日本語
Top