python之scipy库详解

本文详细介绍了Python的Scipy库,涵盖插值、概率统计、曲线拟合、最小化函数、积分、微分方程求解、稀疏矩阵和线性代数等多个方面。通过实例展示了如何使用Scipy进行多项式插值、统计分析、最小二乘拟合、优化问题求解、数值积分和稀疏矩阵操作,是数据科学和工程计算的重要工具。
摘要由CSDN通过智能技术生成

Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。

Scipy 由不同科学计算领域的子模块组成:

子模块 描述
cluster 聚类算法
constants 物理数学常数
fftpack 快速傅里叶变换
integrate 积分和常微分方程求解
interpolate 插值
io 输入输出
linalg 线性代数
odr 正交距离回归
optimize 优化和求根
signal 信号处理
sparse 稀疏矩阵
spatial 空间数据结构和算法
special 特殊方程
stats 统计分布和函数
weave C/C++ 积分

在使用 Scipy 之前,为了方便,假定这些基础的模块已经被导入:

import numpy as np
import scipy as sp
import matplotlib as mpl
import matplotlib.pyplot as plt

由于 ScipyNumpy 为基础,因此很多基础的 Numpy 函数可以在scipy 命名空间中直接调用

1.插值

样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法

from scipy.interpolate import interp1d
np.set_printoptions(precision=2, suppress=True) #设置 Numpy 浮点数显示格式
#从文本中读入数据
data = np.genfromtxt("JANAF_CH4.txt", 
                  delimiter="\t", # TAB 分隔
                  skiprows=1,     # 忽略首行
                  names=True,     # 读入属性
                  missing_values="INFINITE",  # 缺失值
                  filling_values=np.inf)      # 填充缺失值
ch4_cp = interp1d(data['TK'], data['Cp'])  #默认情况下,输入值要在插值允许的范围内,否则插值会报错

我们可以通过 kind 参数来调节使用的插值方法,来得到不同的结果:

  • nearest 最近邻插值
  • zero 0阶插值
  • linear 线性插值
  • quadratic 二次插值
  • cubic 三次插值
  • 4,5,6,7 更高阶插值

对于径向基函数,其插值的公式为:

\sum{n_j}\varphi (|x-x_j|)

通过数据点 xj来计算出 nj 的值,来计算 x处的插值结果

from scipy.interpolate.rbf import Rbf
cp_rbf = Rbf(data['TK'], data['Cp'], function = "multiquadric")
plt.plot(data['TK'], data['Cp'], 'k+')
p = plt.plot(data['TK'], cp_rbf(data['TK']), 'r-')

高维 RBF 插值:

from mpl_toolkits.mplot3d import Axes3D
x, y = np.mgrid[-np.pi/2:np.pi/2:5j, -np.pi/2:np.pi/2:5j]
z = np.cos(np.sqrt(x*
05-29
Scipy是一种Python的科学计算,提供了许多有用的功能,包括数值计算、优化、统计和信号处理等。Scipy是基于Numpy开发的,因此它支持Numpy数组和矩阵,并且可以与Numpy和其他第三方一起使用。 Scipy中包含了许多子模块,每个子模块都包含了一组相关的函数和工具。以下是Scipy中一些常用的子模块和功能: - scipy.integrate:提供了数值积分的函数,包括单重积分和双重积分等。 - scipy.optimize:提供了多种优化算法,包括最小化、最大化、曲线拟合和非线性方程求解等。 - scipy.stats:提供了多种统计函数,包括概率密度函数、累积分布函数和假设检验等。 - scipy.signal:提供了多种信号处理函数,包括滤波、卷积和频谱分析等。 - scipy.linalg:提供了线性代数函数,包括矩阵分解、行列式和特征值等。 - scipy.sparse:提供了稀疏矩阵的函数和工具,用于优化大规模线性代数问题。 Scipy的使用需要先安装,可以使用pip命令进行安装: ``` pip install scipy ``` 安装完成后,可以使用以下命令来导入Scipy: ``` import scipy ``` 要使用Scipy中的子模块和函数,可以使用以下语法: ``` from scipy import 模块名 模块名.函数名() ``` 例如,要使用Scipy中的最小化函数minimize,可以使用以下代码: ``` from scipy.optimize import minimize minimize() ``` ScipyPython中非常强大的科学计算之一,如果你需要进行数值计算、优化、统计或信号处理等方面的工作,那么Scipy是一个非常不错的选择。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值