数学よくわかってないマンがPythonを使ってなんとなくカラー/ベクトル/テンソルについてまとめました。
スカラー
大きさを表すもののこと。Pythonだと数値とかがスカラーになる。
1 # <- スカラー
1.5 # <- スカラー
None # <- スカラーではない
ValueError # <- スカラーではない
大きさを表すってことは順序関係(==, <, <=, >, >=)が定義されていること。
ベクトル
大きさと向きを表すもののこと。2次元平面とかだとX座標とY座標の値を (x, y) という形式で表現して、基底座標と目的の位置の座標があるとその大きさと、向きを表現できる。
(x, y)で 表すのでlistもしくはtupleがベクトルの表現になる。
(3, 4) # <- ベクトル
(5, 1.2) # <- ベクトル
(ValueError, 1) # <- ベクトルではない
(None, None) # <- ベクトルではない
n次元ベクトル
前述のベクトルは長さが2だったので2次元ベクトルと言える。要素数がnならn次元ベクトルとなる。
(1, 2) # <- 2次元ベクトル
(4, 2, 1) # <- 3次元ベクトル
(4, 1, 3, 5) # <- 4次元ベクトル
テンソル
http://qiita.com/EtsuroHONDA/items/02635dc3026e29f3cb41
テンソル積というものが定義できるようなベクトル空間の元をテンソルと言う
テンソルにはいくつかある
- 0階のテンソル: スカラーのこと
np.array(1)
- 1階のテンソル: ベクトルのこと
np.array([1, 2])
- 2階のテンソル: 一般的にテンソルと呼ばれると2階のテンソルのことを指す
np.array([[1, 2], [2, 3]])
- 3階のテンソル: 2階のテンソルのn個の集まり
np.array([[[1, 2], [2, 3]]])
- 4階のテンソル: 3階のテンソルのn個の集まり
np.array([[[[1, 2], [2, 3]]]])
numpy.ndarrayが何階のテンソルなのかは numpy.ndarray.ndim
で確認できる。
>>> np.array(1).ndim
0
>>> np.array([1]).ndim
1
>>> np.array([[1]]).ndim
2
>>> np.array([[[1]]]).ndim
3
>>> np.array([[[[1]]]]).ndim
4
2階のテンソル
一般的にテンソルという場合、2階のテンソルのことを指していることが多い。
Pythonでテンソルを使う場合、その表現はベクトルのリスト (つまりスカラーのリストのリスト) になる。
>>> np.array([[1, 2], [3, 4], [1, 4]])
array([[1, 2],
[3, 4],
[1, 4]])