NumPy

NumPy(Numerical Python)は、Pythonで科学技術計算やデータ分析を行うための基盤ライブラリです。特に**多次元配列(ndarray)**の操作を中心に、高速で効率的な数値計算を可能にします。以下では、NumPyの主な特徴と機能について詳しく説明します。


1. NumPyの特徴

  • 高速な配列計算:C言語で実装されており、純粋なPythonのリスト処理よりも格段に高速。

  • 多次元配列(ndarray):NumPyの中核となるデータ構造で、1次元からn次元までの配列を扱える。

  • ベクトル化演算(Vectorization):ループを使わず、配列単位での高速演算が可能。

  • ブロードキャスティング(Broadcasting):異なる形状の配列同士の演算を自動的に調整。

  • 多様な数学関数:線形代数、統計、フーリエ変換、乱数生成など豊富な関数群を提供。


2. NumPy配列の作成と基本操作

python
import numpy as np # 配列の作成 a = np.array([1, 2, 3]) # 1次元配列 b = np.array([[1, 2], [3, 4]]) # 2次元配列 # 要素アクセス print(a[0]) # 出力: 1 print(b[1, 1]) # 出力: 4 # 配列の形状 print(b.shape) # 出力: (2, 2)

3. 配列の演算

NumPyでは、配列同士の演算を簡潔かつ効率的に記述できます。

python
x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) # 要素ごとの演算 z = x + y # [5, 7, 9] z = x * y # [4, 10, 18] # スカラーとの演算 z = x * 2 # [2, 4, 6]

4. ブロードキャスティング

異なる形状の配列でも、自動的に形を合わせて演算できます。

python
a = np.array([[1, 2], [3, 4]]) b = np.array([10, 20]) c = a + b # 結果: [[11, 22], # [13, 24]]

5. 乱数生成

データ分析や機械学習でよく使われる乱数もNumPyで簡単に生成できます。

python
np.random.seed(0) # 乱数の再現性確保 rand_vals = np.random.rand(3) # [0, 1) の一様分布乱数 norm_vals = np.random.randn(3) # 平均0、標準偏差1の正規分布乱数 ints = np.random.randint(1, 10, 5) # 1〜9の整数を5個

6. 線形代数・統計処理

python
m = np.array([[1, 2], [3, 4]]) # 行列の転置 m.T # 行列積 np.dot(m, m) # 行列の逆行列 np.linalg.inv(m) # 統計量 np.mean(m) np.std(m) np.max(m)

7. NumPyの用途

NumPyは単体でも非常に強力ですが、以下のような上位ライブラリと連携することでデータ分析・機械学習における中心的な役割を果たします。

  • Pandas:表形式データの操作(DataFrame)に特化。

  • Matplotlib / Seaborn:データ可視化。

  • scikit-learn:機械学習モデルの構築。

  • TensorFlow / PyTorch:深層学習ライブラリの内部でもNumPy配列に類似した構造が使われている。


まとめ

NumPyは、Pythonでのデータ分析や機械学習の土台となるライブラリであり、多次元配列と高速演算、数学・統計機能を効率よく扱えるように設計されています。そのため、NumPyの理解はPythonによるデータサイエンスを学ぶ上で必須です。

生成日:2025/05/03