Python:Scipy.interpolate
注意
以下插值函数中,待插值点的坐标,最好按次序排列(参与插值的基准点的坐标可以打乱次序)。如果打乱顺序,可能会导致插值结果异常(插值异常而不是错误,不会报错,但是结果有明显异常)。
griddata
官方网站:scipy.interpolate.griddata — SciPy v1.7.1 Manual
说明
多维插值,由部分已知点坐标对和点值来对整个区域的坐标上的值进行预测,即插值。
用法
scipy.interpolate.griddata(points, values, xi, method='linear',
fill_value=nan, rescale=False)
参数
以下的D,均为维度的意思。
参数 |
类型 |
默认值 |
说明 |
| points |
2D ndarray,尺寸为(n,D) 或 1D ndarray,长度为n,每个元素都是一个包含D个元素的元组 |
点坐标。 假设有9个二维点,其坐标分别从(0,0)到(2,2)(想像一个长为3的正方形),那么它在写为该项参数时,要么是2D ndarray : [[0,1,2,0,1,2,0,1,2], #一共2行,第一行是横坐标 要么是1D ndarray: [(0,0),(0,1),(0,2),(1,0),...,(2,1),(2,2)] #这些点的坐标构成的array 假设有8个三维点,其坐标分别从(0,0,0)到(1,1,1)(想像一个棱为2的正方体),那么它在写为该项参数时,要么是2D ndarray: [[0,1,0,1,0,1], #一共3行,第一行是X坐标 要么是1D ndarray: [(0,0,0),(0,0,1),(0,1,0),(0,1,1),...,(1,1,0),(1,1,1)] #这些点的坐标构成的array |
|
| values | float或者complex的1D ndarray,长度为n(和坐标点数相同) | 这些坐标点处的值。 | |
| xi |
2D ndarray,尺寸为(n,D) 或 1D ndarray,长度为n,每个元素都是一个包含D个元素的元组 |
待插值的点的坐标,写法形式与参数points相同。 | |
| method | {‘linear’, ‘nearest’, ‘cubic’} | 'linear' | 插值方式 |
| fill_value | float | nan |
如果待插值点位于初始点凸包外部,那么这些点将不会被插值,而是用这个参数给定的值代替。 如果这个值没有给出,那么默认值是nan。 这个参数在'nearest'插值时将不会起作用。 |
| rescale | bool | 插值前是否进行重规格化,在某些轴数值相差过大时起作用 |
返回值
1D ndarray,长度和插值点个数相同,其中存放这些点对应的值。
interp2d
官方网站:scipy.interpolate.interp2d — SciPy v1.7.1 Manual
说明
2D网格插值,区别于griddata,后者用于多维插值,而interp2d专用于2维插值。
用法
interp2d(x, y, z, kind='linear', copy=True,
bounds_error=False, fill_value=None)
参数
参数 |
类型 |
默认值 |
说明 |
| x,y | 1D array |
两种写法: ①如果点分布于规则网格中,比如点是一个3*2的矩阵上的六个点,那么x,y只指明矩阵的横纵坐标即可: x = [0,1,2]; y = [0,3]; z = [[1,2,3], [4,5,6]] ②其他情况下,需要在x中写明所有点的横坐标,在y中写明所有点的纵坐标(每个位置处都与x一一对应构成一个完整的点坐标): x = [0,1,2,0,1,2]; y = [0,0,0,3,3,3]; z = [1,2,3,4,5,6] |
|
| z | 1D array或2D array |
指定坐标点(x,y)处的z值,需要一一对应。 在x,y的说明中,给出了两种x,y的情况以及其对应的z的写法。 |
|
| kind | {‘linear’, ‘cubic’, ‘quintic’} | ‘linear’ | 插值方法 |
| copy | bool | True | 是否在内部保留x,y,z,比较少用 |
| bounds_error | bool | False |
如果是True,那么当区域外的值需要插值时,会弹出ValueError; 否则会用fill_value来填充这些值 |
| fill_value | number |
如果有该项,那么区域外的值会设置为该值。 如果忽略,那么区域外的值会通过最近邻外推法得到。 |
返回值
一个函数f,它接收两个参数x和y。
就是说,我们通过原x,y,z来构造函数z = f ( x , y ),再通过f、xnew、ynew来预测znew,即插值:
f = interp2d(x,y,z)
z_new = f(x_new , y_new)
其中x_new、y_new、z_new的写法和原x、y、z相同。
例子
构造一个2D 网格并对其插值,通过interp2d获得插值函数f:
from scipy import interpolate
x = np.arange(-5.01, 5.01, 0.25)
y = np.arange(-5.01, 5.01, 0.25)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx**2+yy**2)
f = interpolate.interp2d(x, y, z, kind='cubic')
用f对x_new、y_new进行插值,得到最终的z_new:
import matplotlib.pyplot as plt
xnew = np.arange(-5.01, 5.01, 1e-2)
ynew = np.arange(-5.01, 5.01, 1e-2)
znew = f(xnew, ynew)
plt.plot(x, z[0, :], 'ro-', xnew, znew[0, :], 'b-')
plt.show()

Python:Scipy.interpolate的更多相关文章
- Python:2维(平面/数组/矩阵)缺省值插值
学习自:python插值填补缺省值_插值缺失值2d python_weixin_39592315的博客-CSDN博客 问题 假设我们有一个2D数组(或者矩阵),其中有一些缺省值NaN,就像下边这样: ...
- 插值(scipy.interpolate)
https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate https://stackov ...
- Python:pandas(三)——DataFrame
官方文档:pandas之DataFrame 1.构造函数 用法 pandas.DataFrame( data=None, index=None, columns=None, dtype=None, ) ...
- python(5):scipy之numpy介绍
python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...
- Python:Fintech产品的第一语言
来源商业新知,原标题:为什么说Python是Fintech与金融变革的秘密武器 人生苦短,不止程序员,Python正在吸引来自金融领域大佬们的青睐目光. 金融科技的风口下,无数传统金融人都想从中掘一桶 ...
- Windows下使用命令安装Python的scipy库出错的解决
平时使用Python都是在Sublime下使用,不想使用IDE.使用各种库时安装也就是使用pip安装即可.来说说今天自己遇到的一个问题:使用scipy数学库时,使用命令: pip install sc ...
- 转:Scipy入门
Scipy入门 转:http://notes.yeshiwei.com/scipy/getting_started.html 本章节主要内容来自 Getting Started .翻译的其中一部分,并 ...
- Python数据分析----scipy稀疏矩阵
一.sparse模块: python中scipy模块中,有一个模块叫sparse模块,就是专门为了解决稀疏矩阵而生.本文的大部分内容,其实就是基于sparse模块而来的 导入模块:from scipy ...
- Python:查看解释器的位置
以前学Python时,有时出现这样的情况:明明记得装了scipy包,怎么打import scipy报错说我没这个包? 问题出在,你的电脑上安装了不止一个Python... 而每安装一个包,仅仅在这个P ...
随机推荐
- memcached 小记
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串.对象).这些数据可以是数据库调用.API ...
- C++ STL:std::unorderd_map 物理结构详解
拉链法的 unordered_map 和你想象中的不一样 根据数组+拉链法的描述,我们很快能想到下面这样的拉链法实现的哈希表,但真的是这样吗?一起看下源码里的实现是怎么样的. 深入STL源码 代码不会 ...
- 关于Linux安装中NAT模式和桥接模式的区别详解(转载)
1.一般我们在创建一个Linux虚拟机时候,会面临三个网络配置选择: 桥接模式.nat模式.host-only模式(主机模式,这个模式用得少,就不介绍了) 2.NAT模式: 所谓nat模式,就是虚拟系 ...
- vue常用组件
滚动组件:better-scroll 官网地址:https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/installation.html ...
- contos 6.9 和 centos7 配置docker?
一.contos 6.9 配置docker? 1.检查centos的内核,因为目前docker的版本所支持的centos最低内核版本为2.4 // uname -r // 2.6.32-696.el6 ...
- freeswitch对接电信线路VOLTE视频通话
在public.xml上设置视频编码: <action application="export" data="nolocal:absolute_codec_stri ...
- 「BalkanOI 2018 Day1」Minmaxtree
「BalkanOI 2018 Day1」Minmaxtree 每个点都有一个最大和最小权值的限制. 然后每一个权值的限制都必须要取到. 每个点显然可以直接让他取到最大或最小权值. 可以想到每个点匹配一 ...
- ubuntu php连接oracle数据库
转载请注明来源:https://www.cnblogs.com/hookjc/ 需要将数据库从mysql迁移到oracle.下了个oracle xe在ubuntu下折腾了好久,都只能启动1521的侦听 ...
- 【C++】近期C++特性进阶学习总结(一)
前言 C++的特性多的数不胜数,语言标准也很多,所以不定期对近期所学的C++知识进行总结,是对自身知识体系检查的良好机会,顺便锻炼一下写博客的文笔 三/五/零之法则 三之法则:如果某个类需要用户定义的 ...
- 文件I/O流、文件、FileInputStreaam、FileOutputStream、FileReader、FileWriter的介绍和使用
一.文件:保存数据的地方 1.文件流:文件在程序中是以流的形式类操作的 类比: 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程 ...