プログラミングの用語一覧へ
このページの目次

ブロードキャストとは?

読み方:ブロードキャスト

最終更新:2026/08/18

3秒でわかる

形の違う配列同士の計算で、小さい方を自動的に引き伸ばして揃える NumPy の仕組み。ループを書かずに全要素へ演算を届けます。

もう少し詳しく

どういうものか

ブロードキャストは、形状の異なる配列同士を演算するとき、小さい方の配列を自動的に複製したように扱って計算を成立させる仕組みです。NumPy や pandas、PyTorch といった数値計算ライブラリに備わっています。

規則は末尾の次元から順に照合していき、両者の大きさが同じか、片方が 1 のときだけ揃えられる、というものです。次元数が足りない側は先頭に 1 を補って比較します。実際に配列が複製されるわけではなく、同じ値を参照して計算するだけなのでメモリは増えません。

なぜ必要か

全要素に同じ値を足したい場面で、素直に書くと Python の for ループになります。100 万要素なら 100 万回のループが Python の実行時間で回り、数秒かかります。ブロードキャストを使えば同じ処理が C の層で一括に走り、桁違いに速く終わります。速度だけでなく、平均を引いて標準偏差で割るといった標準化の式が数学の記法そのままで書ける点も大きな利点です。

具体例

行ごとの平均を引いて中心化する処理です。

import numpy as np scores = np.array([[80, 90, 70], [60, 75, 95]]) col_mean = scores.mean(axis=0) # shape (3,) centered = scores - col_mean # (2, 3) と (3,) -> (2, 3) print(centered) row_mean = scores.mean(axis=1) # shape (2,) # scores - row_mean はエラーになる row_centered = scores - row_mean[:, np.newaxis] # (2, 1) に直せば揃う print(row_centered)

形状 (2, 3) と (3,) は末尾が一致するので揃いますが、(2, 3) と (2,) は末尾が 3 と 2 で食い違うため失敗します。np.newaxis で (2, 1) に整形すると通ります。

つまずきやすいところ

エラーになるより、エラーにならずに間違った形へ広がる方が危険です。形状 (100, 1) と (1, 100) を足すと (100, 100) の巨大な行列ができます。狙いが要素ごとの加算だった場合、計算は通るのに結果が別物になり、メモリも一気に膨らみます。演算の前後で .shape を出して確認する癖をつけると防げます。

pandas でも同じ規則が働きますが、こちらは行と列のラベルで先に位置合わせが行われるため、ラベルが違うと NaN が入ります。

似た用語との違い

用語内容
ブロードキャスト形の違う配列を自動で揃えて要素ごとに計算する
ベクトル化ループを配列演算に置き換えること全般
行列積@dot で行う線形代数の積。要素ごとの計算ではない


覚え方

末尾の次元から見比べて、同じか 1 なら伸ばせる。この 1 行だけ覚えておけば大半は判断できます。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地ブロードキャストプログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

データ分析コースの全編を見る