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 npfrom scipy.interpolate import interp1dimport matplotlib.pyplot as pltx = 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()
