1.

NumPy

編集

本稿は Python の NumPy に関する記事です。

子ページを選択してください。

本ページの子ページ

NumPyとは?

NumPy (Numerical Python) は、Python で科学計算・機械学習を行うときに事実上必須となる外部ライブラリです。中心となるのは ndarray (N 次元配列) オブジェクトで、Python の標準リストに比べて桁違いに高速に多次元数値計算を行えます。

pandas / scikit-learn / TensorFlow / PyTorch / OpenCV など、主要なデータ系ライブラリの内部でも NumPy が広く利用されており、Python のデータ分析エコシステムの土台になっています。

NumPyの主な特徴

  • 高速な配列演算 — ループを書かずにベクトル化で表現 (内部は C で実装)
  • 多次元配列 — 1D / 2D / 3D 以上を統一的に扱う
  • ブロードキャスト — 形が違う配列同士でも自動で要素演算
  • 豊富な数学関数 — 三角関数、指数、対数、統計量、線形代数、FFT 等
  • 線形代数 — 行列積、逆行列、固有値、SVD など (numpy.linalg)
  • 乱数 — 様々な分布から乱数生成 (numpy.random)
  • 他ライブラリとの相互運用 — pandas / scikit-learn / matplotlib との連携が標準

インストールと基本

pip install numpy

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])

print(a + b)      # [11 22 33 44]
print(a * 2)      # [2 4 6 8]
print(a.mean())   # 2.5
print(a.shape)    # (4,)

m = np.array([[1, 2], [3, 4]])
print(m.T)        # 転置
print(m @ m)      # 行列積

標準リストとの違い

項目Python listNumPy ndarray
要素型異種混在 OK同一型 (dtype)
速度遅い (Pythonループ)速い (ベクトル化)
メモリ多い連続領域でコンパクト
多次元list の list で表現真の多次元配列
演算逐次でループ要素ごとに一括で計算

よく使う関数

分類関数
生成np.arraynp.zerosnp.onesnp.arangenp.linspacenp.eye
形状操作reshapeflattenraveltransposeconcatenatestack
統計meanstdvarmedianminmaxsum
線形代数np.dotnp.linalg.invnp.linalg.solvenp.linalg.eig
乱数np.random.randnp.random.randnnp.random.choice
条件np.wherenp.anynp.allnp.isnan

注意点

  • dtype の違い: int64float64 で精度・メモリが異なる。意図しない型変換に注意
  • 巨大配列はメモリを大量に消費。nbytes で見積もる
  • ループは禁物: for i in range(N): ではなくベクトル化/ブロードキャストで書く
  • NumPy が遅いと感じたら、scipy・numba・Cython・GPU (CuPy)・PyTorch などへの移行も検討
  • ファイル入出力は np.save / np.load (バイナリ) や np.savetxt / np.loadtxt (テキスト)

関連

編集
Post Share
子ページ
  1. 配列の作成
  2. 多次元配列の作成
  3. 要素の参照
  4. 要素の追加
  5. 要素の更新
  6. 要素の削除
  7. ブロードキャスト
  8. 多次元配列の構造の確認
  9. 多次元配列を1次元配列に変換
  10. 1次元配列を多次元配列に変換
  11. 要素の範囲指定
  12. 平均値の算出
  13. 行列を結合する方法
同階層のページ
  1. NumPy
  2. Matplotlib