SciPy库(一)常数与特殊函数与插值

news2024/12/29 17:39:23

一、概述

SciPy是一个开源的Python科学计算库,它建立在NumPy之上,提供了许多有用的科学计算功能。SciPy包括各种科学计算模块,如线性代数、优化、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理等。SciPy库的主要特点是其高效性和易用性。

常见模块

模块名功能参考文档
scipy.cluster向量量化cluster API
scipy.constants数学常量constants API
scipy.fft快速傅里叶变换fft API
scipy.integrate积分integrate API
scipy.interpolate插值interpolate API
scipy.io数据输入输出io API
scipy.linalg线性代数linalg API
scipy.misc图像处理misc API
scipy.ndimageN 维图像ndimage API
scipy.odr正交距离回归odr API
scipy.optimize优化算法optimize API
scipy.signal信号处理signal API
scipy.sparse稀疏矩阵sparse API
scipy.spatial空间数据结构和算法spatial API
scipy.special特殊数学函数special API
scipy.stats统计函数stats.mstats API

二、SciPy常数与特殊函数

在这里插入图片描述

2.1 数学常数

import scipy.constants as C

print("π = ", C.pi)
print("e = ", C.e)
print("自然对数的底数 = ", C.golden)

2.2物理常数

常见的常数:

  • constants.c:真空光速
  • constants.h:普朗克常数
  • constants.G:牛顿引力常数
  • constants.g:标准重力加速度
  • constants.e:基本电荷
  • constants.m_e:电子质量
  • constants.m_p:质子质量
  • constants.m_n:中子质量

更多常量请看SciPy 常量模块

2.3 特殊函数(scipy.special)

scipy.specail模块包含了少量实用的函数,同时还包含很多基础的数学函数,比如贝塞尔基函数、椭圆函数、统计函数的基础函数、超几何函数、正交多项式、开尔文函数、伽玛相关函数等等。大多数是比较基础的函数,通常我们直接使用的较少。

实用函数

  • special.round(x):四舍五入为最接近的整数
  • special.cbrt(x):求立方根
  • special.sindg(x):角度x(单位为度)的正弦
  • special.cosdg(x):角度x(单位为度)的余弦
  • special.tandg(x):角度x(单位为度)的正切
  • special.cotdg(x):角度x(单位为度)的余切
from scipy import special

x = 5.2

# 四舍五入为最接近的整数
print(special.round(x))

# 求立方根
print(special.cbrt(x))

# 角度x(单位为度)的正弦
print(special.sindg(x))

# 角度x(单位为度)的余弦
print(special.cosdg(x))

# 角度x(单位为度)的正切
print(special.tandg(x))

# 角度x(单位为度)的余切
print(special.cotdg(x))

特别函数

  • special.gamma(z):伽玛函数。伽玛函数是阶乘函数在实数和复数系上的扩展
  • special.gammaln(z):伽玛函数的对数
  • special.beta(a,b):贝塔函数
  • special.betaln(a,b):贝塔函数
  • special.ellipj(u,m):雅可比椭圆函数
  • special.euler(n,x):欧拉数计算
  • special.binom(n,k):二项式系数
  • special.sici(x):正弦和余弦的积分

2.4 输入输出(scipy.io)

2.4.1 matlab数据文件

mditc = io.loadmat(file):加载.mat类型的matlab文件。返回字典mdict,key为变量名
io.savemat(file, mdict):把mdict字典数据保存到matlab格式的.mat文件
io.whosmat(file):列出matlab格式的.mat文件中的变量。

2.2 wav声音文件

rate,data = io.wavfile.read(file):打开wav声音文件。rate为采样频率,data为数据
io.wavfile.write(file, rate, data):写入一个简单的未压缩的wav文件

2.5 Matlab 数组

转换

import numpy as np
mat = np.matrix('1,2;3,4')
mat

单位矩阵

import numpy as np
import numpy.matlib
mat1 = np.matlib.identity(5)
mat1

 转置

import numpy as np
import numpy.matlib
mat = np.matrix('1,2;3,4')
print(mat)
print(mat.T)

 数乘

np.multiply() 函数用于让两个矩阵同样位置的元素相乘。因此,mat3 = np.multiply(ma, ma1) 表示将矩阵 ma 和 ma1 中同样位置的元素相乘,得到一个新的矩阵 mat3

#mat2 = mat1*2
mat2 = np.multiply(4,mat1)
mat3 = np.multiply(mat2,mat1)#矩阵位乘
mat3

矩阵加法

import numpy as np
import numpy.matlib
ma = np.matrix('1,2;3,4')
ma1 = np.matrix('3,4;1,2')
#ma+ma1
print(np.add(ma, ma1))

矩阵乘法

import numpy as np
import numpy.matlib
ma = np.matrix('1,2;3,4')
print(ma)
ma1 = np.matrix('3,4;1,2')
print(ma1)
# ma*ma1
mat3 = np.dot(ma, ma1)  # 矩阵相乘
mat3

矩阵的逆

 

import numpy as np
import numpy.matlib
ma = np.matrix('1,2;3,4')
ma.I

三、插值与拟合

插值和拟合是数学中的两个重要概念。插值是指通过已知数据点求出一个函数,使得这个函数在已知数据点上的函数值与已知数据点上的函数值相等。而拟合是指通过已知数据点求出一个函数,使得这个函数在已知数据点上的函数值与已知数据点上的函数值的差的平方和最小

 

3.1插值法

原理

3.1.1单变量插值, 一维插值interpld()

interp1d函数是SciPy库中interpolate模块中最常用的插值函数之一。它可以根据给定的数据点和插值方法,返回一个可调用的函数对象,该对象可以用于估计新点的值。interp1d函数的详细参数如下

​scipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True,
bounds_error=None, fill_value=nan, assume_sorted=False)​

其中,x和y是一维数组,表示要进行插值的数据点。kind是指定插值方法的字符串参数,可以取值为’linear’、‘nearest’、‘zero’、‘slinear’、‘quadratic’、‘cubic’。bounds_error是一个布尔型参数,表示是否在超出插值范围时引发异常。fill_value是一个浮点型参数,表示在超出插值范围时要使用的填充值,assume_sorted参数是一个布尔型参数,表示输入的x数组是否已经按升序排列。

  • kind:指定插值的样条曲线的阶数,可以是’linear’(线性),‘nearest’(最近邻),‘zero’(零阶),‘slinear’(一阶样条),‘quadratic’(二阶样条),‘cubic’(三阶样条)等。
import numpy as np
from scipy import interpolate as intp
import matplotlib.pyplot as plt

# 生成等差数列,从0到4,共12个数
x = np.linspace(0,4,12)
# 计算cos(x^2/3+4)的值
y = np.cos(x**2/3+4)

print (x)
print (y)

# 画出散点图
plt.plot(x,y,"o")
# 画出平滑曲线
f = intp.interp1d(x,y,kind="cubic")
xnew = np.linspace(0,4,30)
ynew = f(xnew)
plt.plot(xnew,ynew,"-")

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

突然放大,Midjourney 来中国了!

突然放大,Midjourney 来中国了! 一、 Midjourney内测版本的推出 Midjourney,一款新颖的 AI 视觉艺术平台,近日在中国开放了内测版。这个内测版本在 QQ 频道上进行,每周一和周五的 18:00 开放入口,人数一旦满…

家里宽带申请公网 IP(二)

来源:公众号【鱼鹰谈单片机】 作者:鱼鹰Osprey ID :emOsprey 在之前的《家里宽带搞个服务器,YYDS(一)》笔记中大概介绍了,因为现有的 IPv4 的地址资源枯竭,导致大部分网络都是局域…

中国系统正式发声!所有用户永久免费,网友:再见了,CentOS!

点关注公众号,回复“1024”获取2TB学习资源! 如果说:没有操作系统会怎么样? 对于个PC来说,无论是台式机、笔记本、平板等等,一切都变的一无是处,这些硬件对我们来说,和一堆废铁没什么…

手把手写一个简单IOC(基于XML配置文件)

目录 创建模块 准备测试阶段测试用的Bean 编写ApplicationContext接口 编写ClassPathXmlApplicationContext 确定采用Map集合存储Bean 解析配置文件实例化所有Bean 解析配置文件实例化所有Bean 测试阶段1(实例化bean) Bean的属性赋值 测试阶段2(为bean对象进行赋值)…

初阶数据结构——栈和队列习题

目录 括号匹配问题思路代码 用队列实现栈思路注意点代码 用栈实现队列思路代码 设计循环队列思路数组实现代码链表实现代码 括号匹配问题 OJ链接 思路 是左括号则入栈&#xff0c;是右括号则出栈然后两两比较 代码 #include<stdio.h> #include<stdlib.h> #i…

洛谷P1157详解(两种解法,一看就会)

一、问题引出 组合的输出 题目描述 排列与组合是常用的数学方法&#xff0c;其中组合就是从 n n n 个元素中抽出 r r r 个元素&#xff08;不分顺序且 r ≤ n r \le n r≤n&#xff09;&#xff0c;我们可以简单地将 n n n 个元素理解为自然数 1 , 2 , … , n 1,2,\dot…

chatgpt赋能Python-pycharm桌面图标变白

PyCharm是一个非常流行的Python集成开发环境&#xff0c;它可以帮助Python开发人员更快更高效地编写代码。但是&#xff0c;有些用户可能会遇到一个问题&#xff1a;他们的PyCharm桌面图标突然变成了白色&#xff0c;而不是原来的彩色图标。在这篇文章中&#xff0c;我将详细介…

面试官:为什么有了sleep还需要wait?

1. 能不能调整线程先后顺序&#xff1f; 对于线程执行最大的问题就是随机调度&#xff0c;抢占式执行&#xff0c;对于程序猿来讲&#xff0c;是不喜欢这种随机性的&#xff0c;程序猿喜欢确定的东西&#xff0c;于是就有了一些方法&#xff0c;可以控制线程之间的执行顺序&…

Keil 手动添加自己的lib库

我是在做一个项目看蓝牙模块官方Demo程序时发现对库的使用&#xff0c; 库大家都知道是不需要编译的&#xff0c;而且别人是无法看到源代码的&#xff0c;这样的好处就是编译快&#xff0c;并且方便移植&#xff0c;更安全。 我的制作步骤如下&#xff1a; 1、首先要把整个工程…

大量电脑桌面文件一键批量复制移动

电脑桌面上的文件越来越多&#xff0c;处理起来越来越繁琐。如果需要把这些文件复制或移动到另一个文件夹中&#xff0c;手动一个个复制或移动不仅费时费力&#xff0c;还容易出错。那么有没有什么方法可以快速批量复制和移动这些文件呢&#xff1f;当然有&#xff01;今天小编…

若依前后端分离如何动态渲染echarts图表

本章教程,主要介绍一下如何在若依前后端分离框架中,进行echarts动态渲染数据。 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。…

027python-ddt

在unittest中&#xff0c;测试用例是不能传self以外的参数的&#xff0c;否则会报错import unittestclass TeatMath(unittest.TestCase):# def test_add(self,q): # TypeError: TeatMath.test_add() missing 1 required positional argument: q——>测试用例传参报错def t…

【KD-Tree】基于k-d树的KNN算法实现

文章目录 一、什么是KD-Tree&#xff1f;二、k-d树的结构三、k-d树的创建四、k-d树的应用五、KD-Tree的优缺点 例题JZPFAR 一、什么是KD-Tree&#xff1f; KD-Tree&#xff0c;又称&#xff08;k-dimensional tree&#xff09;&#xff0c;是一种基于二叉树的数据结构。它可以…

大项目推进

拉取最新的小组分支&#xff0c;创建自己开发分支&#xff08;对应实现人&#xff09; 任务分支&#xff08;小组名-功能名-执行人&#xff0c;如&#xff1a;f1-login-zhangfei&#xff09; 根据业务流程整理文档梳理与书写 定义领域模型&#xff08;包括&#xff1a;query、…

通用医学人工智能基础模型(GMAI)

最近&#xff0c;Eric J. Topol和 Pranav Rajpurkar研究团队提出了一个通用医学人工智能基础模型&#xff0c;文章名字《Foundation models for generalist medical artificial intelligence》 模型研究进展包括&#xff1a;多模态架构&#xff0c;和自监督学习技术&#xff0…

知识库AI机器人客服接口对接-唯一客服系统文档中心

如果你的需求仅仅是对接自训练的ChatGPT接口&#xff0c;实现自己的个性化机器人&#xff0c;那么可以看看下面的个性化ChatGPT调用接口前提条件是已经搭建好了知识库服务&#xff0c;该服务默认监听端口8083 chat接口地址 POST http://127.0.0.1:8083/data_collection/searchS…

“伙伴+华为”体系,数字时代的新航标

如果从1994年中国实行税制改革&#xff0c;要求以“以计算机网络为依托”开展企业税务工作算起&#xff0c;转瞬间&#xff0c;中国企业的信息化、数字化建设已经走过了近三十年历程。 这期间&#xff0c;信息化、数字化成为了企业走向管理现代化、全球化的依托&#xff0c;成为…

最新版本的Android studio 集成高德地图的定位功能

android studio版本&#xff1a; 1、根据高德官网链接集成 2、配置key的时候有两个注意点&#xff1a; a .获取安全SHA1 根据高德推荐的方式获取时&#xff0c;可能C:\Program Files\Android\Android Studio\jre\bin目录下找不到keytool.exe; 可以根据以下方式获取&#xff1…

华为新模拟器eNSPLite下载,部署教程及产品使用文档

华为新模拟器eNSPLite下载&#xff0c;部署教程及产品使用文档 如需下载请到我的博客中下载 硬件要求 数通培训认证模拟器支持在个人PC和物理服务器上部署安装&#xff0c;如下所示。 硬件推荐配置CPUX86_64架构CPU&#xff0c;支持VT-x/AMD-V 8核或以上RAM16G或以上DISK40G以…

数据库信息速递 支持机器学习的10个数据库 (译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…