SciPy是一个开源的Python库,用于数学、科学和工程领域。它建立在NumPy之上,提供了大量的算法和数学工具箱,用于处理数学问题,如积分、微分、线性代数、优化、图像处理、统计等。是科学计算中非常重要的一部分,我使用的仅仅是冰山一角,例如对于曲线的滤波,曲线的插值等并且主要是后处理使用。
#高频函数
scipy.integrate: 积分和常微分方程求解器。
quad: 对函数进行单变量积分。
odeint: 解常微分方程。
scipy.optimize: 提供了多种优化算法。
minimize: 最小化一个或多个变量的标量函数。
curve_fit: 使用非线性最小二乘法拟合函数。
scipy.linalg: 线性代数操作。
inv: 计算矩阵的逆。
svd: 奇异值分解。
scipy.sparse: 稀疏矩阵和相关算法。
csr_matrix: 压缩稀疏行矩阵。
scipy.stats: 统计函数。
norm: 正态分布。
ttest_ind: 两个独立样本的t检验。
案例:
对点进行线性插值与三次插值
import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 10)
y = np.sin(x)
# 创建插值函数采用 'linear'和'cubic'是两种常用的插值方式
f_linear = interp1d(x, y)
f_cubic = interp1d(x, y, kind='cubic')
x_dense = np.linspace(0, 10, 100)
y_linear = f_linear(x_dense)
y_cubic = f_cubic(x_dense)
# 绘制原始数据点
plt.plot(x, y, 'o', label='Original data')
# 绘制插值后的曲线
plt.plot(x_dense, y_linear, '-', label='Linear interpolation')
plt.plot(x_dense, y_cubic, '--', label='Cubic interpolation')
# 在线性插值曲线上绘制生成点
plt.plot(x_dense, y_linear, marker='*' , label='Interpolated points')
plt.legend()
plt.show()