AI・生成AIの用語一覧へ
このページの目次

ベクトル化とは?

最終更新:2026/08/18

3秒でわかる

要素ごとのループを書かず、配列全体をまとめて計算する書き方。の確認が最初の1回で済むため、数値計算では速度が桁で変わります。

もう少し詳しく

どういうものか

ベクトル化は、配列の要素を1つずつループで回す代わりに、配列全体を1つの演算として書くやり方です。NumPyやpandasでは、a + b と書くだけで全要素の加算が行われます。この処理はPythonのループではなくC言語で実装された内部ループで走り、CPUのSIMD命令もまとめて使われます。

なぜ必要か

Pythonのforループは1回ごとにオブジェクトの型を確認し、専用のメモリ領域を作ります。100万要素を足すだけでこの手続きが100万回起きます。ベクトル化すると型の確認は最初の1回で済み、値は連続したメモリ上に並んだまま計算されます。数値計算で10倍から100倍の差が出るのは、この手続きの有無が理由です。

具体例

import numpy as np a = np.arange(1_000_000, dtype=np.float64) b = np.arange(1_000_000, dtype=np.float64) # 遅い書き方 out = np.empty_like(a) for i in range(len(a)): out[i] = a[i] * 2 + b[i] # ベクトル化した書き方。結果は同じで、実行時間は桁で違う out = a * 2 + b # 条件分岐もループを書かずに表せる scores = np.array([80, 45, 92, 60]) grade = np.where(scores >= 60, "合格", "不合格")

pandasでも同じで、df.apply で行ごとに関数を呼ぶより、列同士の演算として書いたほうが速くなります。

つまずきやすいところ

速度だけを見て、常にベクトル化が正解だと考えると失敗します。中間結果の配列がそのままメモリに載るため、巨大なデータでは a * 2 + b の途中で一時配列が2本作られ、メモリ不足で落ちることがあります。また、要素ごとに外部APIを呼ぶような処理は、そもそもベクトル化できません。もうひとつの罠は for を消したつもりで apply を使っている場合で、内部ではPythonのループが回っているため、ほとんど速くなりません。

覚え方

「ループを書いたら、それは配列の演算として書けないか」と一度立ち止まると、自然にベクトル化した書き方が身につきます。


似た用語との違い

ブロードキャストは、形の違う配列を自動でそろえて演算する仕組みで、ベクトル化を書きやすくする補助です。並列化は複数のコアへ処理を割り振る話で、1コアの中で命令をまとめるベクトル化とは別の層にあります。両方は同時に効かせられます。

計測せずに速いと決めつけないことも大切です。

知識のつながり

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

現在地ベクトル化AI

LEARN BY DOING

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

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

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