C
Python/データ/Lesson 26

NumPy 入門

1時間·theory
このチャプター
1/2
Python

NumPy 入門

🎯 このレッスンを読み終えたら

このレッスンを読み終えると、以下の3つを自信を持って実践できます。

  • ✅ Python が なぜ AI・データの標準言語になったのか
  • ✅ Python 3.x 向け venv + requirements.txt のセットアップ
  • ✅ print / input / type / dir の4つの組み込み関数

学習目標を チェックリストとして手元に置き、すべて答えられるようになったらレッスンを閉じてください。

NumPy — コード + 実行結果

NumPy = 数値計算の標準ライブラリ。配列を C の速度 で処理。PyTorch・TensorFlow・Pandas はいずれも NumPy をベースにしています。


1. インストール + 配列の作成

bash
$ pip install numpy
python
import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(a)             # [1 2 3 4 5]
print(a.shape)       # (5,)
print(a.dtype)       # int64

# よく使う生成
np.zeros(5)          # [0. 0. 0. 0. 0.]
np.ones((2, 3))      # 2×3 1で埋める
np.arange(0, 10, 2)  # [0 2 4 6 8]
np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.]

2. ベクトル演算 — 1行で

python
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print(a + b)         # [5 7 9]      ← 要素ごと +
print(a * b)         # [4 10 18]    ← 要素ごと *
print(a * 2)         # [2 4 6]      ← 全ての要素 × 2
print(a ** 2)        # [1 4 9]      ← 二乗
print(a.sum())       # 6
print(a.mean())      # 2.0

リストとの最大の違い — [1,2,3] + [4,5,6] = [1,2,3,4,5,6](連結)。NumPy は 数学的な演算 を行います。


3. 2D 配列(行列)

python
A = np.array([[1, 2, 3],
              [4, 5, 6]])

print(A.shape)       # (2, 3)
print(A[0, 1])       # 2 (行0, 列1)
print(A[:, 0])       # [1 4]  (全ての行, 0番目の列)
print(A.T)           # 転置 — [[1 4], [2 5], [3 6]]

4. 統計

python
data = np.array([85, 92, 78, 90, 88])

print(data.mean())      # 86.6 (平均)
print(data.std())       # 5.16 (標準偏差)
print(data.max())       # 92
print(data.argmax())    # 1 (最大値インデックス)
print(np.median(data))  # 88

5. 条件 — ブーリアンインデックス

python
a = np.array([1, -2, 3, -4, 5])

positives = a[a > 0]                    # [1 3 5]
a[a < 0] = 0                          # [-値 → 0]
print(a)                              # [1 0 3 0 5]

6. 速度 — Python リストとの比較

python
import time

# Python list
lst = list(range(10_000_000))
start = time.time()
result = [x * 2 for x in lst]
print(f"list: {time.time()-start:.2f}秒")     # 約 0.5秒

# NumPy
arr = np.arange(10_000_000)
start = time.time()
result = arr * 2
print(f"numpy: {time.time()-start:.2f}秒")    # 約 0.02秒 (25倍速い)

一行まとめ

np.array() + ベクトル演算 + boolean indexing + 統計 = データ分析の出発点。

💻 NumPy を始めよう
# pip install numpy
import numpy as np

# Python リスト vs NumPy
python_list = [1, 2, 3, 4, 5]
numpy_array = np.array([1, 2, 3, 4, 5])

# 速度比較 (NumPyがはるかに速い)
import time

size = 1000000
py_list = list(range(size))
np_arr = np.arange(size)

# Python リスト
start = time.time()
result = [x * 2 for x in py_list]
print(f"Python: {time.time() - start:.4f}s")

# NumPy 配列
start = time.time()
result = np_arr * 2
print(f"NumPy: {time.time() - start:.4f}s")

# NumPy の利点
# 1. ベクトル化演算 (ループ不要)
arr = np.array([1, 2, 3])
print(arr + 10)      # [11, 12, 13]
print(arr * 2)       # [2, 4, 6]
print(arr ** 2)      # [1, 4, 9]

# 2. ブロードキャスティング
a = np.array([[1], [2], [3]])
b = np.array([10, 20, 30])
print(a + b)  # 自動拡張

💡 重要ポイント

1. C で実装されているため非常に高速
2. ベクトル化: ループなしで演算
3. ブロードキャスティング: サイズの自動調整

Python はシンプルで読みやすい構文を持ち、幅広い分野で活用されています。インタープリタ言語として REPL 環境で即座に実行できます。PEP 8 コーディングスタイルガイドに従い、Black/autopep8 で自動フォーマットします。型ヒント(type hints)によりコードの可読性と IDE サポートが向上します。pip でパッケージ管理、venv/conda で仮想環境を構築します。

🐍 実際に動かしてみよう — NumPy 入門

上記の概念を実際にコードで実行してみてください。値を変えながら動作を自分で確認するのが最も効果的な学習方法です。
✏️ Python 코드
📟 コンソール出力
▶ 実行ボタンを押してください
🐍 Pyodideで実際のPythonを実行 — 初回は読み込みに3〜5秒

🤖 AI にこう聞いてみよう

このレッスンの概念を理解すると、AI に 具体的な 指示を出せるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。

  • 「この for ループを numpy のベクトル演算に書き換えて」
  • 「このデータクリーニングを pandas の method chaining でリファクタリングして」

なぜこれがトークンを減らすのか

概念を知らないと、AI の回答を受け取った後でも 「それって何ですか?」 と再び聞き返さなければなりません。その「聞き返し」がトークンを消費します。概念を一度理解しておけば、やり取りが一度で完結 します。

先に読むとよい概念: FastAPI入門
次のおすすめ: Pandas入門
NumPy入門 - Python