1.

Python 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. NumPy 配列の範囲指定(スライス・多次元・Boolean / Fancy Index)
  12. 平均値の算出
  13. 行列を結合する方法
同階層のページ
  1. NumPy
  2. Matplotlib

最近更新/作成されたページ