Python Numpy⑥ - 行列での四則演算

Numpy行列で四則演算を行っていきます。

行列の準備

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

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np

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

# 2つめの2次元配列を定義
y = np.array([[1, 2, 3], [0.1, 0.5, 0.8]])
print('行列 y')
print(y)

[実行結果]

行列 x
[[1 2 3]
 [4 5 6]]

行列 y
[[1.  2.  3. ]
 [0.1 0.5 0.8]]

行列の四則演算


形状が同じ行列同士ではそのまま四則演算が適用できます。

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
print('# 和')
print(x + y)
print()

print('# 差')
print(x - y)
print()

print('# 積')
print(x * y)
print()

print('# 商')
print(x / y)

[実行結果]

# 和
[[2.  4.  6. ]
 [4.1 5.5 6.8]]

# 差
[[0.  0.  0. ]
 [3.9 4.5 5.2]]

# 積
[[1.  4.  9. ]
 [0.4 2.5 4.8]]

# 商
[[ 1.   1.   1. ]
 [40.  10.   7.5]]

行列のブロードキャスト

先ほどは同じ形状同士で四則演算を行いましたが、配列のサイズが完全に一致しなくても片方の次元の長さが1または0の場合、同じ値によって自動的にサイズ拡張されてから計算されます。

[コード]

1
2
3
4
5
z = np.array([[1, 2, 3]])
print(z)
print()

print(x + z)

[実行結果]

[[1 2 3]]

[[2 4 6]
 [5 7 9]]

1行3列のデータが2行3列に拡張されて計算されていることが分かります。


最後に行列ではない単純な数字を足してみます。


[コード]

1
print(x + 100)

[実行結果]

[[101 102 103]
 [104 105 106]]

全ての要素に対して100が足されていることが分かります。

ブロードキャスト機能を使うといちいち要素ごとに四則演算を行う必要がなくシンプルにコードを書くことができ大変便利です。