February 2024
Intermediate to advanced
576 pages
9h 17m
Japanese
「6章 NumPy配列の計算:ユニバーサル関数」では、NumPyのユニバーサル関数を使用して演算をベクトル化し、動作の遅いPythonループを取り除く方法を学びました。ここではブロードキャストについて説明します。これは、異なるサイズや形状の配列に対して二項演算(加算、減算、乗算など)を適用するための一連のルールです。
同じサイズの配列の場合、二項演算は要素ごとに実行されます。
In [1]: import numpy as np
In [2]: a = np.array([0, 1, 2])
b = np.array([5, 5, 5])
a + b
Out[2]: array([5, 6, 7])
ブロードキャストにより、この二項演算を異なるサイズの配列に対しても実行できます。例えば、スカラー(0次元の配列と考える)と配列の加算が行えます。
In [3]: a + 5 Out[3]: array([5, 6, 7])
これは値5をコピー、もしくは配列[5, 5, 5]に引き伸ばした後、配列aとの加算を行う操作と考えられます。
この手法を高次元の配列にも拡張できます。確認のために、2次元配列と1次元配列の加算を観察してみましょう。
In [4]: M = np.ones((3, 3))
M
Out[4]: array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
In [5]: M + a
Out[5]: array([[1., 2., 3.],
[1., 2., 3.],
[1., 2., 3.]])
1次元配列aは、配列Mの形状に一致するよう2番目の次元に沿って引き伸ばされます。すなわちブロードキャストされます。 ...