注意

以下插值函数中,待插值点的坐标,最好按次序排列(参与插值的基准点的坐标可以打乱次序)。如果打乱顺序,可能会导致插值结果异常(插值异常而不是错误,不会报错,但是结果有明显异常)。

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行,第一行是横坐标
[0,1,2,0,1,2,0,1,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坐标
[0,1,0,1,0,1], #第二行是Y坐标
[0,1,0,1,0,1] #第三行是Z坐标
]

要么是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的更多相关文章

  1. Python:2维(平面/数组/矩阵)缺省值插值

    学习自:python插值填补缺省值_插值缺失值2d python_weixin_39592315的博客-CSDN博客 问题 假设我们有一个2D数组(或者矩阵),其中有一些缺省值NaN,就像下边这样: ...

  2. 插值(scipy.interpolate)

    https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate https://stackov ...

  3. Python:pandas(三)——DataFrame

    官方文档:pandas之DataFrame 1.构造函数 用法 pandas.DataFrame( data=None, index=None, columns=None, dtype=None, ) ...

  4. python(5):scipy之numpy介绍

    python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...

  5. Python:Fintech产品的第一语言

    来源商业新知,原标题:为什么说Python是Fintech与金融变革的秘密武器 人生苦短,不止程序员,Python正在吸引来自金融领域大佬们的青睐目光. 金融科技的风口下,无数传统金融人都想从中掘一桶 ...

  6. Windows下使用命令安装Python的scipy库出错的解决

    平时使用Python都是在Sublime下使用,不想使用IDE.使用各种库时安装也就是使用pip安装即可.来说说今天自己遇到的一个问题:使用scipy数学库时,使用命令: pip install sc ...

  7. 转:Scipy入门

    Scipy入门 转:http://notes.yeshiwei.com/scipy/getting_started.html 本章节主要内容来自 Getting Started .翻译的其中一部分,并 ...

  8. Python数据分析----scipy稀疏矩阵

    一.sparse模块: python中scipy模块中,有一个模块叫sparse模块,就是专门为了解决稀疏矩阵而生.本文的大部分内容,其实就是基于sparse模块而来的 导入模块:from scipy ...

  9. Python:查看解释器的位置

    以前学Python时,有时出现这样的情况:明明记得装了scipy包,怎么打import scipy报错说我没这个包? 问题出在,你的电脑上安装了不止一个Python... 而每安装一个包,仅仅在这个P ...

随机推荐

  1. python数据操作--8

    转:https://www.tuicool.com/wx/MB7nieb 数据类型 整数, 浮点数, 字符串, 布林值(True,False) 列表(list), 不可变的列表 Tuple, 集合(没 ...

  2. 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...

  3. ☕【Java深层系列】「并发编程系列」深入分析和研究MappedByteBuffer的实现原理和开发指南

    前言介绍 在Java编程语言中,操作文件IO的时候,通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于Mapp ...

  4. Three.js 实现2022冬奥主题3D趣味页面 🐼

    背景 迎冬奥,一起向未来!2022冬奥会马上就要开始了,本文使用 Three.js + React 技术栈,实现冬日和奥运元素,制作了一个充满趣味和纪念意义的冬奥主题 3D 页面.本文涉及到的知识点主 ...

  5. .NET 20周年软件趋势随想

    从2000年微软启动.NET战略时,我还是一位大学生,当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目:Mono,一 ...

  6. Request与Response

    前言 request和response对象是由服务器创建的.我们来使用它们: request对象是来获取请求消息,response对象是来设置响应消息. Request 定义 服务器进行创建,通过该对 ...

  7. Git远程仓库地址操作

    添加 git remote add test1_origin git@github.com:b84955189/test1.git test1_origin:远程地址名,这里是我自定的. git@gi ...

  8. 让HTML和JSP页面不缓存从Web服务器上重新获取页面

    感谢原文作者:佚名 原文链接:https://www.jb51.net/web/100639.html 问题描述 用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面--在Se ...

  9. Shell编程中的用户输入处理

    Linux read命令用于从标准输入读取数值. read 内部命令被用来从标准输入读取单行数据.这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据. 语法 read [-er ...

  10. centos7 安装yum源

    centos7的服务器,没有yum,没有wget命令真的寸步难行,经过总结和查询,现在算搞定了,把经验总结一下,以免大家再浪费时间去找原因: 安装yum需要wget安装yum的rpm包,所以前提是先有 ...