Python Numpy④ - 転置をとる/行列の形状を変える

Numpy行列の転置をとる方法と形状を変える方法を試してみます。

転置をとる

まずNumpyをインポートし、2行3列の行列を作成します。

1
2
3
4
import numpy as np

# 2次元配列を定義
x = np.array([[1, 2, 3], [4, 5, 6]])

転置をとるにはシンプルに .T とするだけです。

[コード]

1
2
3
4
5
6
print('転置前')
print(x)
print()

print('転置後')
print(x.T)

[実行結果]

転置前
[[1 2 3]
 [4 5 6]]

転置後
[[1 4]
 [2 5]
 [3 6]]

3次元配列を転置することも可能です。

[コード]

1
2
3
4
5
6
7
8
9
# 3次元配列を定義
x = np.array([[[1, 2], [3, 4], [5, 6]]])

print('転置前')
print(x)
print()

print('転置後')
print(x.T)

[実行結果]

転置前
[[[1 2]
  [3 4]
  [5 6]]]

転置後
[[[1]
  [3]
  [5]]

 [[2]
  [4]
  [6]]]

データだけをみるとよく分かりませんが、形状を確認すると逆順になっていることが分かります。

[コード]

1
2
3
4
5
6
print('転置前')
print(x.shape)
print()

print('転置後')
print(x.T.shape)

[実行結果]

転置前
(1, 3, 2)

転置後
(2, 3, 1)

形状を変える

配列の形状を変えるには reshapeメソッド を使います。

[コード]

1
2
3
4
5
6
# 2行3列の配列を定義
x = np.array([[1, 2, 3], [4, 5, 6]])

# 1行6列の配列に変更します。
y = x.reshape(1, 6)
print(y)

[実行結果]

[[1 2 3 4 5 6]]

配列を変換する場合、要素数が一致しないとエラーになりますので気を付けてください。