SciPy简单应用

本文介绍了SciPy在科学计算中的应用,包括文件输入/输出、特殊函数、线性代数操作、优化与拟合、统计和随机数的使用。通过实例展示了如何使用scipy.io读写文件、scipy.special的贝塞尔函数、线性代数的矩阵运算、scipy.optimize的最优化方法以及scipy.stats的概率分布和随机数生成。
摘要由CSDN通过智能技术生成

SciPy简单应用

SciPy是在NumPy的基础上增加了大量用于数学计算,科学计算以及工程计算的模块,包括线性代数,常微分方程求解,信号处理,图像处理于稀疏矩阵等。参考文档

SciPy主要模块如下表:

模块 说明
scipy.cluster 向量计算 / Kmeans
scipy.constants 物理和数学常量
scipy.fftpack 傅里叶变换
scipy.integrate 积分程序
scipy.interpolate 插值
scipy.io 数据输入和输出
scipy.linalg 线性代数程序
scipy.ndimage n-维图像包
scipy.odr 正交距离回归
scipy.optimize 优化
scipy.signal 信号处理
scipy.sparse 稀疏矩阵
scipy.spatial 空间数据结构和算法
scipy.special 一些特殊数学函数
scipy.stats 统计

他们全都依赖于numpy, 但是大多数是彼此独立的。导入Numpy和Scipy的标准方式:

import numpy as np
from scipy import stats  # 其他的子模块类似

文件输入/输出:scipy.io

  • 载入和保存matlab文件:
from scipy import io as spio
a = np.ones((3, 3))
spio.savemat('file.mat', {
   'a': a}) # savemat expects a dictionary
data = spio.loadmat('file.mat', struct_as_record=True)
data['a']
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
  • 载入文本文件

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None)

from io import StringIO  # StringIO behaves like a file object
import numpy as np
c = StringIO(u"0 1\n2 3")
print(np.loadtxt(c))
[[0. 1.]
 [2. 3.]]
d = StringIO(u"M 21 72\nF 35 58")
np.loadtxt(d, dtype={
   'names': ('gender', 'age', 'weight'), # dtype指定解析出来的数据类型
                 'formats': ('S1', 'i4', 'f4')})
array([(b'M', 21, 72.), (b'F', 35, 58.)],
      dtype=[('gender', 'S1'), ('age', '<i4'), ('weight', '<f4')])
c = StringIO(u"1,0,2\n3,0,4")
"""
delimiter指定文件中数据之间的分隔符
usecols 指定读取文件中的哪些列,在下面的函数中,usecols=(0,2)表示只读取文件的第1、3列
unpack:读出来的数据是否需要解包,注意接受函数的变量个数要与读出来的行数或列数吻合
"""
x, y = np.loadtxt(c, delimiter=',', usecols=(0, 2), unpack=True)
x
array([1., 3.])
y
array([2., 4.])

特殊函数:scipy.special

常用的一些函数如下:

  • 贝塞尔函数,比如scipy.special.jn() (第n个整型顺序的贝塞尔函数)
  • 椭圆函数 (scipy.special.ellipj() Jacobian椭圆函数, …)
  • Gamma 函数: scipy.special.gamma(), 也要注意 scipy.special.gammaln() 将给出更高准确数值的 Gamma的log。
  • Erf, 高斯曲线的面积:scipy.special.erf(),也叫误差函数

线性代数操作:scipy.linalg

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值