『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介:

scipy包包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,,特殊函数等等。

scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱。scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作。

在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了。作为非专业程序员,科学家总是喜欢重新发明造轮子,导致了充满漏洞的,未经优化的,很难分享和维护的代码。相反,Scipy程序经过优化和测试,因此应该尽可能使用。

模块:

scipy 由一些特定功能的子模块组成:

模块  功能
scipy.cluster 矢量量化 / K-均值
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模块的标准方式是:

1 import numpy as np
2 from scipy import stats  # 其它子模块相同 

主scipy命名空间大多包含真正的numpy函数(尝试 scipy.cos 就是 np.cos)。这些仅仅是由于历史原因,通常没有理由在你的代码中使用import scipy。

【注】:import scipy as sp 后sp.子模块 会失败,所以建议采用上文的 from import 方法。

介绍几个函数:

由于scipy包过于完备复杂,并且暂时看来我的需求也并不是特别急迫,所以简单的介绍几个我感觉蛮有意思的函数部分,以后在sklearn的机器学习中还会继续打交道的,所以,sp,接下来还请多多指教。

导入积分包,插值包

1 import numpy as np
2 import matplotlib.pyplot as plt
3 from scipy import integrate,interpolate

积分:

一维积分尝试:

integrate.quad(lambda x:np.exp(-x**2),-10,10):原函数,下限,上限

1 ‘‘‘数值积分‘‘‘
2
3 # 专用包sciyp.intergrate
4
5 print(integrate.quad(lambda x:np.exp(-x**2),-10,10))

二维积分:

1 def half_circle(x):
2     return (1-x**2)**0.5
3 def half_sphere(x, y):
4     return (1-x**2-y**2)**0.5
5 res = integrate.dblquad(half_sphere, -1, 1,  # 原函数,x下限,y下限
6         lambda x:-half_circle(x),            # y积分区域下限
7         lambda x:half_circle(x))             # y积分区域上限
8 print(res[0])

尝试绘张图:

1 import matplotlib.pyplot as plt
2 from mpl_toolkits.mplot3d import Axes3D
3 u = np.linspace(-1,1,100)
4 x,y = np.meshgrid(u,u)     # 网格坐标生成函数
5 z = np.abs((1-x**2-y**2))**0.5
6 fig = plt.figure()
7 ax = Axes3D(fig)
8 ax.plot_surface(x,y,z,rstride=4,cstride=4,cmap=‘rainbow‘)
9 plt.show()

插值:

interpolate.interp1d(x,signal)

interpolate.interp1d(x,signal,kind=‘cubic‘)

 1 ‘‘‘插值‘‘‘
 2
 3 # 创建信号
 4 x = np.linspace(-18,18,36)
 5 noise = 0.1*np.random.random(len(x))
 6 signal = np.sinc(x) + noise
 7
 8 # 生成一次插值函数
 9 interpreted = interpolate.interp1d(x,signal) #<---------
10 x2 = np.linspace(-18,18,180)
11 y = interpreted(x2)
12
13 # 生成三次插值函数
14 cubic = interpolate.interp1d(x,signal,kind=‘cubic‘) #<---------
15 y2 = cubic(x2)
16
17 plt.plot(x,signal,marker=‘o‘,label=‘data‘)
18 plt.plot(x2,y,linestyle=‘-‘,label=‘linear‘)
19 plt.plot(x2,y2,‘-‘,lw=2,label=‘cubic‘)
20 plt.legend()
21 plt.show()

小结:

对于本书(《NumPy学习指南》)的学习到此就告一段落了,由于numpy对于python的特殊地位,对于她的熟悉学习过程必然会伴随我剩余人生相当长的一部分,所以也没什么伤感的,只是新坑已经准备好了,准备继续大干一场。中二一次,在这用魔兽过往版本的一句转场结束系列:燃烧的远征仍将继续,而我们将踏着灰烬前行!

时间: 2024-10-24 05:23:03

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)的相关文章

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

『Python』Numpy学习指南第五章_矩阵和通用函数

简单的矩阵生成以及合并操作: np.mat('1 2 3;4 5 6;7 8 9')np.bmat('A B;B A')np.arange(1,10).reshape(3,3) 1 import numpy as np 2 3 4 5 '''通用函数''' 6 7 # 字符串创建矩阵 8 # 也可以使用数组创建 9 A = np.mat('1 2 3;4 5 6;7 8 9') 10 # 数组创建矩阵 11 A = np.mat(np.arange(1,10).reshape(3,3)) # n

『Python』Numpy学习指南第三章__常用函数

感觉心情渐渐变好了,加油! np.eye(2)np.savetxt('eye.txt',i2)c,v = np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True) 1 # __*__coding=utf-8__*__ 2 3 import numpy as np 4 5 # 单位矩阵生成 6 i2 = np.eye(2) 7 print(i2) 8 9 # 保存为txt 10 np.savetxt('eye.txt',i2

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

『Python』常用函数实践笔记

库安装: 1).pip & conda 2).在win10下手动安装python库的方法: 『python』计算机视觉_OpenCV3库安装 原生: list.append():添加元素到list末尾 list.extend():使用一个list扩展另一个list 字典列表化:字典是有顺序的,而且list字典等于list字典的key dict = {'c':1,'b':2,'a':3} list(dict) # Out[13]: # ['c', 'b', 'a'] list(dict.keys(

『Python』内存分析_list和array的内存增长模式

『Python』内存分析_List对象内存占用分析 在Python中,列表是一个动态的指针数组,而array模块所提供的array对象则是保存相同类型的数值的动态数组.由于array直接保存值,因此它所使用的内存比列表少.列表和array都是动态数组,因此往其中添加新元素,而没有空间保存新的元素时,它们会自动重新分配内存块,并将原来的内存中的值复制到新的内存块中.为了减少重新分配内存的次数,通常每次重新分配时,大小都为原来的k倍.k值越大,则重新分配内存的次数越少,但浪费的空间越多.本节通过一系

SecureCRT中python脚本编写学习指南

SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 内容 (1)使用python语言实现SecureCRT中的D

『Python』内存分析_List对象内存占用分析

『Python』内存分析_下_list和array的内存增长模式 list声明后结构大体分为3部分,变量名称--list对象(结构性数据+指针数组)--list内容,其中id表示的是list对象的位置, v引用变量名称,v[:]引用list对象,此规则对python其他序列结构也成立,以下示范可用id佐证, a=b时,a和b指向同一个list对象 a=b[:]时,a的list对象和b的list对象指向同一个list内容 Q1:元素存储地址是否连续 首先见得的测试一下list对象存储的内容(结构3