python中griddata的外插值_利用griddata进行二维插值

python中griddata的外插值_利用griddata进行二维插值有时候会碰到这种情况:实际问题可以抽象为\(z=f(x,y)\)的形式,而你只知道有限的点\((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很多,不再赘述,这里仅介绍二维的插值法这里主要利用scipy.interpolate包里griddata函数griddata(points,values,xi,method=’linear’…

大家好,又见面了,我是你们的朋友全栈君。

有时候会碰到这种情况:

实际问题可以抽象为 \(z = f(x, y)\) 的形式,而你只知道有限的点 \((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很多,不再赘述,这里仅介绍二维的插值法

这里主要利用 scipy.interpolate 包里 griddata 函数

griddata(points, values, xi, method=’linear’, fill_value=numpy.nan, rescale=False)

points:二维数组,第一维是已知点的数目,第二维是每一个点的 \(x,y\) 坐标

values:一维数组,和 points 的第一维长度一样,是每个坐标的对应 \(z\) 值

xi:需要插值的空间,一般用 numpy.mgrid 函数生成后传入

method:插值方法

nearest

linear

cubic

fill_value:无数据时填充数据

该方法返回的是和 xi 的 shape 一样的二维数组

【example】

import numpy as np

import matplotlib.pyplot a plt

from scipy.interpolate import griddata

points = np.random.rand(n, 2) # n是已知点个数

values = np.random.rand(n) # 对应没每个点的值

# 插值的目标

# 注意,这里和普通使用数组的维度、下标不一样,是因为如果可视化的话,imshow坐标轴和一般的不一样

x, y = np.mgrid[

end1:start1:step1 * 1j,

start2:end2:step2 * 1j]

# grid就是插值结果,你想要的到的区间的每个点数据都在这个grid矩阵里

grid = griddata(points, values, (x, y), method=”cubic”, fill_value=0)

# 这里通过imshow显示时,坐标思维要按照计算机的来,普通图片是2维数组

# x 是最终结果的第一维,下标是从上到下由零增加

# y 是最终结果的第二维,下标是从左到右由零增加

plt.subplot(1, 1, 1)

plt.title(“0°”)

plt.imshow(grid, cmap=’jet’) # contourf jet gray

plt.colorbar()

plt.show()

np.mgrid 函数每一个维度最后一个参数:

可以是实数中的整数,表示步长,此时不包括末尾数据(左闭右开)

可以是实部为零,虚部为整数的复数,这个数字表示该区间想要插值多少个点的数据(闭区间)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141383.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java面试之 OOAD & UML

    Java面试之 OOAD & UMLJava面试之 OOAD & UML

    2022年4月22日
    37
  • lmdb安装_Vim下载

    lmdb安装_Vim下载lmdb安装在pip和conda环境中都有,但是不能导入

    2022年9月28日
    2
  • Java数组转list,原来是这样–有陷阱![通俗易懂]

    Java数组转list,原来是这样–有陷阱![通俗易懂]最近开发中,业务上处理,经常用到asList方法,这让我不经想起了它的很多容易让人犯错的地方或者误解的地方,所以就想抽出时间来,整理一下,和大家分享出来,深夜了,话不多说,主要以代码为主,简易的代码,你一看就知道了!大家都知道这个方法是将数组转成list,是JDK中java.util包中Arrays类的静态方法。大家使用时一定要注意(请看代码和注释,一看就明了了): Strings[]…

    2022年8月23日
    6
  • 秦九韶计算多项式的方法_秦九韶

    秦九韶计算多项式的方法_秦九韶本人水平有限,题解不到为处,请多多谅解本蒟蒻谢谢大家观看秦九韶公式:可不断的提取x作公因式,写成如上形式不断将x=4由里往外扩展,大大方便了计算

    2022年8月3日
    3
  • JavaScript和Java的区别[通俗易懂]

    JavaScript和Java的区别[通俗易懂]  虽然JavaScript中有Java,但他们之间的关系就如同印度和印度尼西亚一样——没有什么关系。只是JavaScript中的某些语法和Java类似而已。出身不同  Java和JavaScript是由不同公司发布的不同的产品,Java是由Sun公司发布编程语言,而JavaScript是由Netscape公司发布的脚本语言。变量不同1.变量定义时的区别  定义变量时Java和JavaScript有区别。Java是强类型的语言,它要求每个变量必须在定义时明确指出这个变量是什么类型的;而JavaS

    2022年7月9日
    26
  • Java 链表结点插入

    Java 链表结点插入PS:链表是一种数据结构,而数据结构就是一种存放数据的方式。为什么需要链表?我们知道,数组也可以存储数据,那么为什么还需要链表呢?接下来,我们来看看数组和链表的区别:1、数组就像身上编了号站成一排的人,要找第10个人很容易,根据人身上的编号很快就能找到。但插入、删除慢,要往某个位置插入或删除一个人时,后面的人身上的编号都要变。当然,加入或删除的人始终末尾的也快。2、链表就…

    2022年4月30日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号