NumPy 基礎(ndarray・ブロードキャスト)

数値計算の土台NumPy。ndarray・ベクトル化・ブロードキャスト・axisを完全マスター。

数値計算の土台、NumPy。ndarrayとブロードキャストを理解すれば一気に楽になります。

胡桃 あんず(普段) 胡桃 あんず

NumPyって何ができるの?

若葉 みどり 先生(笑顔) 若葉 みどり 先生

高速な数値配列計算ライブラリね。 リストより数十〜百倍速くて、機械学習の前処理から計算まで広く使うのよ。

白銀 ゆき(普段) 白銀 ゆき

中心はndarray(N次元配列)ですね。 1次元はベクトル、2次元は行列、3次元以上はテンソルになります。

import numpy as np

# 基本作成
a = np.array([1, 2, 3, 4, 5])     # 1次元配列
b = np.array([[1, 2], [3, 4]])     # 2次元配列
z = np.zeros((3, 4))               # 3x4のゼロ行列
i = np.eye(3)                       # 3x3の単位行列
r = np.random.randn(100)            # 標準正規分布から100サンプル

# 形状確認
print(a.shape)    # (5,)
print(b.shape)    # (2, 2)
print(b.dtype)    # int64
print(b.ndim)     # 2 (次元数)

# 演算 (ベクトル化)
doubled = a * 2                     # [2, 4, 6, 8, 10]
added = a + np.array([10,10,10,10,10])  # [11,12,13,14,15]
squared = a ** 2                    # [1, 4, 9, 16, 25]

# 統計関数
mean = a.mean()         # 3.0
std = a.std()           # 標準偏差
max_val = a.max()       # 5
argmax = a.argmax()     # 4 (最大値のインデックス)
桜井 もも(普段) 桜井 もも

ベクトル化って?

白銀 ゆき(普段) 白銀 ゆき

forループを書かずに、配列全体に演算を一括適用することです。 これがNumPyが速い理由ですよ。

胡桃 あんず(普段) 胡桃 あんず

ブロードキャストって何のこと?

# ブロードキャスト: 形状の違う配列同士を自動で揃える
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
row = np.array([10, 20, 30])     # shape: (3,)
result = matrix + row             # 各行に row が足される
# [[11, 22, 33],
#  [14, 25, 36],
#  [17, 28, 39]]

# 各列の標準化 (z変換)
X = np.random.randn(100, 5)
X_std = (X - X.mean(axis=0)) / X.std(axis=0)
若葉 みどり 先生(普段) 若葉 みどり 先生

ブロードキャストは次元が違う配列同士を、自動で次元を揃えて計算してくれる仕組みなのよ。 これでループを書かずに、行列と行ベクトルを足せるの。

白銀 ゆき(普段) 白銀 ゆき

axis=0は『行方向(列ごと)』、axis=1は『列方向(行ごと)』という指定です。 つまりX.mean(axis=0)は各列の平均ということですね。

桜井 もも(しょんぼり) 桜井 もも

axis、覚えにくいよぉ…

若葉 みどり 先生(普段) 若葉 みどり 先生

『axis=その軸を潰す方向』と覚える。 axis=0 を潰すと行が消えて列ごとの結果が残る、 axis=1 を潰すと列が消えて行ごとの結果が残る。

白銀 ゆき(普段) 白銀 ゆき

DS検定★では『ndarray の形状』『ブロードキャスト』『axis の意味』『argmax/mean等の集計関数』が頻出よ。

確認クイズ

(3,4) の行列 X に対し X.mean(axis=0) の結果のshapeは何か。

  1. (3,)
  2. (4,)
  3. (3,4)
  4. スカラー
こたえを見る

正解: 2. (4,)

(4,)。 axis=0 で行方向を潰すので、列ごとの平均が得られて長さ4のベクトルになります。 (列が4つあるため)。

胡桃あんず・若葉みどり先生のイラスト。お正月のもちつきに挑戦

この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。

この記事について

データサイエンティスト検定スタディが作成した教材です。運営について・記事の作り方

試験についてはこちらをご覧ください: データサイエンティスト協会 公式サイト

この記事を共有