Python SciPy ライブラリ完全ガイド
Python の SciPy は、科学技術計算や数値解析のための強力なライブラリです。本記事では、SciPy の主要な機能とその活用方法について詳しく解説します。
1. SciPy ライブラリの概要
SciPyはNumPyを基盤としたライブラリであり、高度な数学的計算を行うために設計されています。- 数値積分、最適化、統計、線形代数、信号処理など、多岐にわたる機能を提供。
- 科学技術計算、データ分析、機械学習、シミュレーションに活用可能。
インストール方法
SciPy は pip で簡単にインストールできます。
pip install scipy
import numpy as np
from scipy import integrate
def f(x):
return np.sin(x)
result, error = integrate.quad(f, 0, np.pi)
print(f"積分結果: {result}, 誤差: {error}")
from scipy import optimize
def f(x):
return x**2 + 10*np.sin(x)
result = optimize.minimize(f, x0=0)
print(result.x)
import numpy as np
from scipy import linalg
A = np.array([[3, 2], [1, 4]])
B = np.array([5, 6])
solution = linalg.solve(A, B)
print(solution)
from scipy import stats
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mean = stats.tmean(data)
std_dev = stats.tstd(data)
print(f"平均: {mean}, 標準偏差: {std_dev}")
from scipy import signal
import numpy as np
import matplotlib.pyplot as plt
time = np.linspace(0, 1, 500, endpoint=False)
signal_data = np.sin(2 * np.pi * 5 * time)
filtered_signal = signal.medfilt(signal_data, kernel_size=5)
plt.plot(time, signal_data, label='Original')
plt.plot(time, filtered_signal, label='Filtered')
plt.legend()
plt.show()
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, num=10, endpoint=True)
y = np.sin(x)
interp_func = interpolate.interp1d(x, y, kind='cubic')
x_new = np.linspace(0, 10, num=100)
y_new = interp_func(x_new)
plt.plot(x, y, 'o', label='Original')
plt.plot(x_new, y_new, '-', label='Interpolated')
plt.legend()
plt.show()
from scipy import ndimage
import numpy as np
import matplotlib.pyplot as plt
image = np.random.rand(100, 100)
blurred_image = ndimage.gaussian_filter(image, sigma=2)
plt.imshow(blurred_image, cmap='gray')
plt.show()
from scipy.cluster.vq import kmeans, vq
import numpy as np
data = np.random.rand(10, 2)
centroids, _ = kmeans(data, 2)
labels, _ = vq(data, centroids)
print(labels)
from scipy.sparse import csr_matrix
import numpy as np
matrix = np.array([[0, 0, 1], [4, 0, 0], [0, 2, 0]])
sparse_matrix = csr_matrix(matrix)
print(sparse_matrix)
from scipy.fft import fft
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.sin(2 * np.pi * x)
y_fft = fft(y)
plt.plot(np.abs(y_fft))
plt.show()