【なんぱい】

NumPy(ナンパイ) とは?

💡 Pythonの数値計算を支える「縁の下の力持ち」
📌 このページのポイント
NumPy 配列演算の概念 Pythonリスト(遅い) 1 2 3 4 5 ループで1つずつ計算 NumPy配列(高速) 1 2 3 4 5 一括でまとめて計算 ベクトル演算の例: 配列 × 2 [1, 2, 3, 4, 5] × 2 = [2, 4, 6, 8, 10] ループ不要!1行で全要素に適用 NumPyはC言語で実装されており、大量データの数値計算が高速
NumPy配列演算のイメージ
ひよこ ひよこ

NumPyって何が便利なの?

ペンギン先生 ペンギン先生

Pythonは便利な言語だけど、普通に書くと計算が遅いんだ。NumPyを使うと、100万個の数字の足し算を一行で書けて、しかも数百倍速く計算できる。データサイエンスや機械学習では大量の数値を扱うから、NumPyなしでは実用的な速度が出ないんだよ。

ひよこ ひよこ

おもしろい!なんでそんなに速いの?

ペンギン先生 ペンギン先生

NumPyの中身はC言語で書かれているからだよ。Pythonのコードから呼び出すけど、実際の計算はCの速度で処理される。しかも「ベクトル化」という仕組みで、ループを使わずに配列全体を一度に計算できるんだ。

ひよこ ひよこ

pandasとの関係は?

ペンギン先生 ペンギン先生

pandasの内部はNumPyで動いているんだ。scikit-learnTensorFlowも同様で、Pythonのデータサイエンス系ライブラリのほぼすべてがNumPyの上に構築されている。NumPyはいわば「建物の基礎」のような存在だよ。

ひよこ ひよこ

NumPyを使うときの注意点ってある?

ペンギン先生 ペンギン先生

ビュー」と「コピー」の違いがNumPyで一番ハマりやすいポイントなんだ。配列をスライスしたとき、新しい配列ができたように見えて実は元の配列と同じメモリを参照している(ビュー)ことがある。ビューを変更すると元のデータまで変わってしまって、バグの原因になる。逆にコピーが意図せず大量に作られてメモリを食い尽くすこともある。これは内部的にはメモリレイアウトや「ストライド」という概念が関わっていて、NumPyを何年も使っているベテランでも「あれ、これビューだっけ?コピーだっけ?」と迷うことがある。公式ドキュメントでも「この挙動は混乱しやすい」と認めているくらい、設計上の難しいトレードオフなんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NumPy」って出てきたら「Pythonで高速に数値計算するための基盤ライブラリのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「NumPy(Numerical Python)」 = 数値計算のためのPython
💬 Numericalは「数値の」。Pythonで数値計算を高速に行うためのライブラリだよ
← 用語集にもどる