« ^ »

Pythonで学ぶスカラー/ベクトル/テンソル

所要時間: 約 2分

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]])