高知の田舎で耕すデータサイエンス農家のブログ

「高知と農業、あと哲学とか」からブログタイトルを一時変更中です

【スポンサーリンク】

Python でスカラー、ベクトル、行列、テンソルを実装する

スカラーとは

通常の数字のこと。アルファベットなどの文字も含む。

スカラーの実装

Pythonで扱う通常の数値が、スカラーに対応します。

# スカラーの例

a = 1
b = 1.2
c = -0.25
d = 1.2e5 # 1.2×10の 5 乗。つまり 120000

ベクトルとは

ベクトルとは、スカラーを直線上に並べたもの。ここでは、アルファベットのアルファベットの小文字に矢印をのせたものでベクトルを表します。

 \displaystyle
\vec{a}=\begin{pmatrix}
1\\
2\\
3\\
\end{pmatrix}\\
\vec{b}=(-2.5, 0.24, -1.4, 1.9, 0.52)\\
\vec{p}=\begin{pmatrix}
p_1\\
p_2\\
\vdots\\
p_m\\
\end{pmatrix}\\
\vec{q}=(q_1, q_2, \cdots , q_n)\\

ベクトルの実装

ベクトルはNumPyの 1 次元配列を用いて表すことができます。

# ベクトルを NumPy の 1 次元配列で表す

import numpy as np

a = np.array([1, 2, 3])
print(a)

出力結果

[1 2 3]

行列とは

行列とはスカラーを格子状に並べたものです。

 \displaystyle
\begin{pmatrix}
0.13 & -0.25 & 2.4 & 0.92 \\
-0.5 & 0.36 & 0.78 & -0.50\\
-0.36 & 0.2.6 & 0.25 & -2.2\\
\end{pmatrix}

水平方向を行、垂直方向を列といいます。

 P m \times n の行列ですが、行列の要素を変数で表す際の添字の数は 2 つです。

 \displaystyle
P = \begin{pmatrix}
p_{1  1} & p_{1 2} & \cdots & p_{1 n} \\
p_{2 1} & p_{2 2} & \cdots & p_{2 n} \\
\vdots & \vdots & \ddots & \vdots\\
p_{m 1} & p_{m 2} & \cdots & p_{m n} \\
\end{pmatrix}

行列の実装

Numpy を用いて行列を実装します。

import numpy as np

# 2 × 3 の行列

a =  np.array([[1,2,3],
               [4,5,6]])

print(a) 

# 3 × 2 の行列

b = np.array([[0.19, 0.12],[-1.1, 0.79],[0.14, -1.9]])

print(b) 

出力結果

[[1 2 3]
[4 5 6]]
[[ 0.19 0.12]
[-1.1 0.79]
[ 0.14 -1.9 ]]

テンソルとは

テンソルスカラーを複数の次元に並べたものです。スカラー、ベクトル、行列を含みます。

各要素に着く添字の数を、そのテンソルの階数といいます。スカラーには数字がありませんので、0 階のテンソル、ベクトルは 1 階のテンソル、行列は 2 階のテンソルです。3 階のテンソル、4 階のテンソルというふうに、より高次元になっていきます。

テンソルの実装

NumPy の多次元配列を用いて表現できます。

import numpy as np

a = np.array([[[0, 1, 2, 3],
               [4, 5, 6, 7],
               [8, 9, 10, 11]],
              
              [[1, 2 ,3, 4],
               [5, 6, 7, 8],
               [9, 10, 11, 12]]])

print(a)

出力結果

[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]]

参考文献

【スポンサーリンク】