1. NumPyとは?なぜ学ぶのか
NumPy(Numerical Python)は、Pythonで高速な数値計算を行うためのライブラリです。 数値の集まりを「ndarray(多次元配列)」と呼ばれる専用のデータ構造で扱い、 大量の数値データを一括処理できるように設計されています。
AI・機械学習・データ解析・科学計算の分野では事実上の標準ライブラリで、 PyTorch・scikit-learn・pandas など主要なライブラリはすべて NumPy の考え方や互換性を前提に作られています。 つまり、NumPyを理解することはAI開発・データ解析のあらゆる場面で土台になるということです。
🌱 このコースの前提: このコースは Python初学者コース 修了レベル(変数・リスト・関数・クラスの基礎)を前提としています。 「リスト内包表記やクラスがまだ不安」という方は、先に初学者コースを完走してから戻ってくるとスムーズに学べます。
なぜNumPyを学ぶのか、理由は大きく3つあります。
- AI/データ解析のコードはほぼNumPy — 機械学習の入力データ、画像、モデルの重み・出力など、扱う数値はほぼすべてNumPy配列
- 簡潔で高速 — Pythonリストで for ループを書く処理が、NumPyなら1行で書けて数十倍速い
- shape の感覚が他にも転用できる — PyTorch のテンソル、TensorFlow のテンソル操作もNumPyとほぼ同じ感覚で書ける
| Pythonリスト | NumPy配列(ndarray) | |
|---|---|---|
| 要素の型 | 混在OK(int, str, ... 何でも入る) | 同じ型に統一(int64, float64 など) |
| 速度 | 遅い(Pythonループ) | 速い(C実装・ベクトル化) |
| 数学演算 | 自分で for ループ | 一行で要素ごとに自動適用 |
| メモリ | 大きい(オブジェクト参照) | 小さい(連続メモリ) |
| 用途 | 汎用データ管理 | 数値計算・行列・データ処理に特化 |
🩺 医療AI文脈:
医療AI開発で扱う数値(CT/MRI画像のピクセル値・検査値の集計・モデルの予測スコア など)は、
ほぼ必ずNumPy配列の形で処理されます。画像1枚は (高さ, 幅, チャンネル) という3次元配列、
患者×検査項目のテーブルは2次元配列として表現されます。
このコースで shape(形状)の感覚をつかむことが、その後の医療AI開発の入り口になります。
2. 最初のNumPy配列を作ってみよう
ここからは実際にコードを動かしながら学びます。NumPyを使うときは、
import numpy as np と書いて読み込み、以降は np という短い名前で呼び出すのが世界共通の慣習です。
Pythonのリストを np.array() に渡すだけで、NumPy配列(ndarray)に変換できます。
💡 import numpy as np の慣習:
np は NumPy 公式のサンプル・教科書・論文コードでも使われる世界共通のエイリアスです。
自分のコードでも必ず np で統一しましょう。これを守るだけで、他の人のコードを読むときも自分のコードを共有するときも混乱が減ります。
NumPy配列の真価は「全要素に対する演算が一行で書ける」ことにあります。次のセルで体感してみましょう。
🩺 医療AI文脈:
mean()・std() は AI 学習でデータを 正規化
(平均を引いて標準偏差で割る処理)するときに必ず使う関数です。
患者集団の検査値分布を分析する統計処理でも、まずはここから始まります。
3. なぜNumPyは速いのか?
NumPyが速い理由は、内部の作りに秘密があります。
- 内部は C 言語で実装されている — Pythonのループより遥かに速い
- 全要素が同じ型で 連続したメモリ領域 に詰めて配置される — CPUがデータをキャッシュしやすい
- ベクトル命令(SIMD)が使える — 複数要素を1命令でまとめて処理
これらの工夫により、「リストの全要素に同じ演算をする」処理が圧倒的に高速化されます。 この「配列まるごと一気に計算する書き方」を ベクトル化(vectorization) と呼びます。
💡 このコードで初登場する2つの関数:
np.arange(n)— Pythonのrange(n)のNumPy版で、0からn-1までの整数を持つ配列を作ります。詳しい使い方は レッスン3「配列の生成バリエーション」 で扱いますtime.perf_counter()— Python標準ライブラリtimeモジュールの高精度な時計です。前後で呼び出して引き算すれば、その間の経過時間(秒)が得られます
💡 大規模データではこの差が決定的: 10万要素の比較でも数倍〜数十倍の差ですが、AI学習では 数百万〜数千万件 のデータを扱うのが普通です。 このスケールではベクトル化なしには現実的な速度が出ません。 PyTorchやTensorFlowのテンソル演算も、この「ベクトル化」の発展形(さらにGPU活用で並列化)です。
⚠ ブラウザ実行の注意: 本コースのコード例は 10000〜100000要素 程度に抑えています(ブラウザ内Python実行環境のため)。 実務では100万件規模のデータも扱いますが、考え方・書き方は同じです。
🤖 AI用語メモ — 「ベクトル化」とは?
ここで言う「ベクトル」は数学的なベクトルというより、「複数の数値を一気に処理する書き方」と理解してOKです。
arr * 2 + 1 のように 配列まるごとに対して演算を書く ことを指します。
for ループを書かずに済むので、コードが短くなり、速度も大幅に上がります。
4. 練習問題
各セルのコードを書き換えて「▶ 実行」を押してみましょう。「↺ リセット」で元のコードに戻せます。
検査値リストを NumPy配列に変換して統計を求めよう
Pythonリスト glucose_list = [95, 110, 88, 145, 102, 78, 165](血糖値 mg/dL)を
NumPy配列に変換し、平均・最大・最小を表示してください。
ヒントを見る(答え+解説)
import numpy as np
glucose_list = [95, 110, 88, 145, 102, 78, 165]
# np.array() で NumPy配列に変換してください
glucose = np.array(glucose_list)
# 平均・最大・最小を表示してください
print("平均:", glucose.mean()) # 111.85...
print("最大:", glucose.max()) # 165
print("最小:", glucose.min()) # 78
NumPy配列は .mean() / .max() / .min() といったメソッドを呼ぶだけで集計できます。Pythonリストの場合は sum(lst)/len(lst)・max(lst)・min(lst) と書く必要があり、書き方も実行速度もNumPyに軍配が上がります。
ベクトル化された演算を試そう
体温(℃)のリスト temps_c = [36.5, 37.2, 38.1, 36.8, 39.0] を NumPy配列に変換し、
すべての要素を華氏(°F)に変換してください。
変換式:°F = °C × 1.8 + 32
ヒントを見る(答え+解説)
import numpy as np
temps_c = np.array([36.5, 37.2, 38.1, 36.8, 39.0])
# 配列全体に対する演算で華氏に変換してください
temps_f = temps_c * 1.8 + 32
print("摂氏:", temps_c)
print("華氏:", temps_f)
# → 華氏: [ 97.7 98.96 100.58 98.24 102.2 ]
temps_c * 1.8 + 32 と書くだけで、配列の全要素に対して同じ計算が一気に適用されます。これがベクトル化の便利さです。Pythonリストで同じことをやるなら [c * 1.8 + 32 for c in temps_c_list] のように for ループ(内包表記)が必要です。
Z-scoreを計算してみよう
BMI値 bmi = np.array([19.2, 22.5, 28.1, 24.0, 31.5, 21.8]) について、
各値を Z-score(平均からどれだけ外れているか、標準偏差を1単位とする値)に変換してください。
計算式:z = (x - 平均) / 標準偏差
ヒントを見る(答え+解説)
import numpy as np
bmi = np.array([19.2, 22.5, 28.1, 24.0, 31.5, 21.8])
# 平均と標準偏差を求めてください
mean_bmi = bmi.mean()
std_bmi = bmi.std()
# Z-score を計算してください(配列全体に対する演算)
z_scores = (bmi - mean_bmi) / std_bmi
print("BMI: ", bmi)
print("Z-score:", z_scores.round(2))
# → Z-score: [-1.18 -0.34 1.11 0.05 1.99 -0.52]
Z-score は AI学習で 「特徴量の正規化」 として頻出します。各値が「平均からどれだけ離れているか(標準偏差を1単位として)」を表します。(bmi - mean_bmi) / std_bmi のように、配列全体に対する四則演算で一気に計算できるのがNumPyの強みです。.round(2) は小数点以下2桁に丸める処理です。
5. まとめ
このレッスンのポイント
- NumPyは数値計算用のPythonライブラリで、AI・データ解析の事実上の標準
import numpy as npで読み込み、np.array(リスト)で配列に変換.mean() / .max() / .std()など、集計が一行で書ける- 配列同士・配列とスカラーの演算は 要素ごとに自動適用(ベクトル化)
- 内部はC実装+連続メモリ+ベクトル化で、Pythonリストより数十倍速い
自由に試してみましょう:
完了するとコース一覧に進捗が記録されます