NumPy入門④ 配列演算(ベクトル化計算)
ベクトル化計算とは?
NumPyの大きな特徴のひとつは「ベクトル化計算」です。
これは ループを使わずに配列全体に演算を適用できる仕組み で、Pythonの標準リストよりもはるかに高速に処理できます。
基本的な四則演算
NumPy配列では、要素ごとに自動的に計算が行われます。
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
print(a + b) # [11 22 33 44]
print(a - b) # [ -9 -18 -27 -36]
print(a * b) # [ 10 40 90 160]
print(b / a) # [10. 10. 10. 10.]
リスト同士ではできない「要素ごとの演算」が可能です。
スカラー演算
配列全体に対して、1つの数値を一括で演算できます。
print(a + 5) # [ 6 7 8 9]
print(a * 2) # [ 2 4 6 8]
要素ごとの累乗や平方根
数学関数も配列全体に適用されます。
print(a ** 2) # [ 1 4 9 16] (二乗)
print(np.sqrt(a)) # [1. 1.41421356 1.73205081 2. ] (平方根)
行列演算(ドット積・内積)
二次元配列では行列演算も可能です。
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# ドット積(行列積)
print(np.dot(A, B))
# [[19 22]
# [43 50]]
# Python 3.5以降は @ 演算子でも可
print(A @ B)
集約演算
要素の合計や平均などを計算できます。
c = np.array([1, 2, 3, 4, 5])
print(np.sum(c)) # 15
print(np.mean(c)) # 3.0
print(np.max(c)) # 5
print(np.min(c)) # 1
まとめ
- ベクトル化計算により、ループ不要で高速な演算が可能
- 配列同士の演算は要素ごとに自動で計算される
- スカラー値の加算・乗算も配列全体に適用できる
- 行列演算(ドット積)や集約関数で高度な数値処理が可能