配列の軸
配列やテンソルは、0次元、1次元、2次元のように多次元の構造をとる。これは高次の要素がより低次の要素をネストすることによって構成されている。 各次元に関する向きのことを軸といい、shape属性には高次の軸から順に長さが格納されている。これを形状と呼んでいる。 0次元配列
まず、スカラ型(0次元)の配列について確認しよう。
code:dim0.py
import numpy as np
d0 = 1
x = np.array(d0)
print(x.shape)
print(x)
shape属性で形状を確認してみると、
( )
と空要素のタプルが返される。これは0次元であり、軸をもたないことを示している。 ~~~~~~~~~~~~~~~~~~~~~~~
1次元配列
1次元配列は1本の「軸0」を持つ配列である。
これは、軸0の向きに0次元配列(スカラ値)を並べることによって構成されている。
code:dim1.py
import numpy as np
x = np.array(d1) # 0次元が「並んでいる」
print(x.shape)
print(x)
形状を確認してみると、
(4, )
とタプルが返される。ここで表示された「4」が0軸方向にスカラ値を並べた長さを表している。
code:(続き).py
print('axis=0:\n', x.sum(axis=0))
https://scrapbox.io/files/670d096265a55e001c809f5c.png
~~~~~~~~~~~~~~~~~~~~~~~
2次元配列
2次元配列は2本の 「軸0, 軸1」を持つ配列である
軸0の向きに1次元配列が並んでいる。
code:dim2.py
import numpy as np
# axis = 1
# axis = 0
x = np.array(d2) # リストの入れ子から2次元配列を作る
print(x.shape)
print(x)
確認すると、
(3, 4)
と表示される。
ここで表示された「3」が、軸0の向きに1次元配列を並べた長さを表している。この向きは axis = 0 で指定できる。
ここで表示された「4」が、軸1の向きにスカラ値を並べた長さを表している。この向きは axis = 1 で指定できる。
確認しよう。
code:(続き).py
print('axis=0:\n', x.sum(axis=0))
print('axis=1:\n', x.sum(axis=1))
https://scrapbox.io/files/670d0a71c629a0001dfeb07b.png
~~~~~~~~~~~~~~~~~~~~~~~
3次元配列
3次元配列は3本の「軸0, 軸1, 軸2」を持つ配列である。
軸0の向きに2次元配列が並んでいる。
https://scrapbox.io/files/670d0ab1f024f000220d9b05.png
分かり易さのために、正/負の値を持つ要素で二つの2次元配列を区別した。
code:dim3.py
import numpy as np
# aixs = 2、要素4つ
# axis = 1 、要素3つ
# axis = 0、要素ふたつ
x = np.array(d3)
print(x.shape)
print(x)
(2, 3, 4)
と表示される。
ここで表示された「2」が、軸0の向きに2次元配列を並べた長さを表している。
ここで表示された「3」が、軸1の向きに1次元配列を並べた長さを表している。
ここで表示された「4」が、軸2の向きに0次元配列を並べた長さを表している。
sumメソッドを利用して、各軸の向きに総和を求めてみよう。
code:(続き).py
print('axis=0:\n', x.sum(axis=0)) # 軸0
print('axis=1:\n', x.sum(axis=1)) # 軸1
print('axis=2:\n', x.sum(axis=2)) # 軸2