NumPyはPythonで数値計算を行うための基本的なライブラリです。
この学習記録では、「Python 3 エンジニア認定データ分析試験」に出題される範囲を意識して、
配列の計算方法や演算の種類、形状操作などをまとめておきます。
✅ NumPy配列(ndarray)とは?
NumPyで使用する配列は ndarray
型と呼ばれ、多次元の数値データを効率よく扱えます。
import numpy as np
a = np.array([1, 2, 3]) # 1次元配列
b = np.array([[1, 2], [3, 4]]) # 2次元配列
✅ 要素ごとの基本演算(加減乗除・指数・剰余など)
NumPyでは配列同士またはスカラーとの間で、以下のような演算ができます。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a - b) # [-3 -3 -3]
print(a * b) # [4 10 18]
print(a / b) # [0.25 0.4 0.5]
print(a ** 2) # [1 4 9](2乗)
print(b % 2) # [0 1 0](剰余)
✅ ドット積(行列積)の計算と条件
ドット積(行列積)は、左の行列の行と右の行列の列を内積して、新しい2次元配列を作ります。
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
C = np.dot(A, B)
print(C)
✏️ 手計算の内容
- Aの1行目 × Bの1列目 →
1*5 + 2*7 = 19
- Aの1行目 × Bの2列目 →
1*6 + 2*8 = 22
- Aの2行目 × Bの1列目 →
3*5 + 4*7 = 43
- Aの2行目 × Bの2列目 →
3*6 + 4*8 = 50
# [[19 22]
# [43 50]]
✏️ ドット積が可能な条件
左側の列数と右側の行数が一致している必要があります。
# OK:A(2×3) × B(3×1) → 結果(2×1)
A = np.array([[1, 2, 3],
[4, 5, 6]])
B = np.array([[1],
[2],
[3]])
print(np.dot(A, B)) # [[14], [32]]
# NG:A(2×3) × B(2×3) は不一致
# np.dot(np.array([[1,2,3]]), np.array([[4,5,6]])) → ValueError
✅ 比較演算・条件抽出(ブール配列)
a = np.array([1, 2, 3, 4, 5])
print(a > 3) # [False False False True True]
print(a[a > 3]) # [4 5]
✅ 統計関数(合計・平均・標準偏差など)
a = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(a)) # 21(全体の合計)
print(np.mean(a)) # 3.5(平均)
print(np.std(a)) # 標準偏差
print(np.var(a)) # 分散
print(np.min(a)) # 最小値
print(np.max(a)) # 最大値
print(np.median(a)) # 中央値
✅ 軸指定による処理
print(np.sum(a, axis=0)) # 列ごと → [5 7 9]
print(np.sum(a, axis=1)) # 行ごと → [6 15]
✅ 集合演算(1次元配列)
x = np.array([1, 2, 3, 4])
y = np.array([3, 4, 5, 6])
print(np.union1d(x, y)) # 和集合 → [1 2 3 4 5 6]
print(np.intersect1d(x, y)) # 積集合 → [3 4]
print(np.setdiff1d(x, y)) # 差集合(x - y)→ [1 2]
print(np.setxor1d(x, y)) # 対称差 → [1 2 5 6]
✅ ブロードキャスト(形状の違う配列間演算)
A = np.array([[1, 2, 3],
[4, 5, 6]])
B = np.array([[10],
[20]])
C = A * B
print(C)
# [[ 10 20 30]
# [ 80 100 120]]
✅ reshapeによる形状変換
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape(2, 3)
print(b)
# [[1 2 3]
# [4 5 6]]
✅ 転置と次元操作
a = np.array([[1, 2], [3, 4]])
print(a.T) # 転置(行と列の入れ替え)
b = np.expand_dims(a, axis=0) # 新しい軸を追加
print(b.shape) # (1, 2, 2)
✅ 線形代数関連の関数
A = np.array([[1, 2],
[3, 4]])
print(np.linalg.inv(A)) # 逆行列
print(np.linalg.det(A)) # 行列式
print(np.linalg.eig(A)) # 固有値と固有ベクトル
✅ 論理演算(全体 or 条件チェック)
a = np.array([1, 2, 3, 4])
print(np.any(a > 2)) # 1つでもTrue → True
print(np.all(a > 0)) # 全てTrue → True
✅ おわりに
NumPyは、Pythonでデータ分析を行ううえで基礎となるライブラリです。
配列の形や演算の種類、条件付きの抽出、ドット積など、試験範囲でも問われる機能が多く含まれています。
まずはこれらの基本的な計算や使い方に慣れることから始めようと思いました。