In [1]:
import numpy as np
In [2]:
# サンプル用のアレイを作る
arr = np.arange(9).reshape((3,3))
arr
Out[2]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
In [3]:
# 転置
arr.T
Out[3]:
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
In [4]:
# transposeメソッドでも可能
arr.transpose()
Out[4]:
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
In [11]:
# 引き数をとれる。0は行、1は列
arr.transpose((0,1))
Out[11]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
In [13]:
# 行と列が入れ替わる
arr.transpose((1,0))
Out[13]:
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
In [14]:
# swapaxesは、どれとどれを入れ替えるか。
arr.swapaxes(1,0)
Out[14]:
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
In [17]:
arr.swapaxes(0,1)
Out[17]:
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
In [19]:
arr
Out[19]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
In [20]:
# 行列のかけ算
np.dot(arr.T, arr)
# 45 = 0*0 + 3*3+ 6*6
Out[20]:
array([[45, 54, 63],
       [54, 66, 78],
       [63, 78, 93]])
In [21]:
# 3次元行列
arr3d = np.arange(12).reshape((3,2,2))
arr3d
Out[21]:
array([[[ 0,  1],
        [ 2,  3]],

       [[ 4,  5],
        [ 6,  7]],

       [[ 8,  9],
        [10, 11]]])
In [22]:
arr3d[0]
Out[22]:
array([[0, 1],
       [2, 3]])
In [22]:
# 3次元行列の転置も可能
arr3d.transpose((0,2,1))
Out[22]:
array([[[ 0,  2],
        [ 1,  3]],

       [[ 4,  6],
        [ 5,  7]],

       [[ 8, 10],
        [ 9, 11]]])