SciPy(サイパイ)は、Pythonプログラミング言語のためのオープンソースの科学技術計算ライブラリで、特に数値計算やデータ解析に便利な多くの機能を提供します。SciPyは、NumPy(Numerical Python)ライブラリの上に構築されており、線形代数、最適化、統計、信号処理、画像処理など、幅広い数学的操作をサポートしています。

特徴

編集

SciPyは、数値計算とデータ解析に関連する多くのアルゴリズムを効率的に実装しています。主な特徴は以下の通りです。

  • 線形代数scipy.linalg): 行列計算、固有値問題、行列分解など
  • 最適化scipy.optimize): 最適化問題の解決、数値的な最適解の探索
  • 積分scipy.integrate): 数値積分のための関数
  • 補間scipy.interpolate): データ点間の補間
  • 信号処理scipy.signal): フィルタリング、周波数解析、スペクトル解析
  • 統計scipy.stats): 確率分布、統計的推測、検定
  • 画像処理scipy.ndimage): 多次元配列の画像処理

使用方法

編集

SciPyは、主にNumPyと連携して使用されるため、まずNumPyライブラリをインポートする必要があります。以下は、SciPyを使用するための基本的なコード例です。

integrate.py
import numpy as np
from scipy import integrate

# 定積分の計算(例:x^2の積分を0から1まで)
result, error = integrate.quad(lambda x: x**2, 0, 1)
print("積分結果:", result)
print("積分の誤差:", error)

このコードは、scipy.integrate.quad関数を使って、x²の関数を0から1まで積分しています。

インストール

編集

SciPyはPythonのパッケージ管理システムであるpipを使って簡単にインストールできます。以下のコマンドでインストールできます。

pip install scipy

また、NumPyも必要であるため、次のように同時にインストールすることも可能です。

pip install numpy scipy

使用例

編集

線形代数

編集

SciPyのscipy.linalgモジュールを使って、行列の固有値を計算する例を示します。

linalg.py
from scipy.linalg import eig
import numpy as np

# 2x2行列の固有値を計算
A = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = eig(A)
print("固有値:", eigenvalues)
print("固有ベクトル:", eigenvectors)

最適化

編集

SciPyのscipy.optimizeモジュールを使って、関数の最小値を求める例です。

optimize.py
from scipy.optimize import minimize

# 最小化する関数
def objective(x):
     return x**2 + 3*x + 2

# 最適化
result = minimize(objective, 0)  # 初期値は0
print("最小値:", result.fun)

print("最適化されたパラメータ:", result.x)

関連リンク

編集