python中griddata的外插值_利用griddata进行二维插值
大家好,又见面了,我是你们的朋友全栈君。
有时候会碰到这种情况:
实际问题可以抽象为 \(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.cn/141383.html原文链接:https://javaforall.cn
相关文章
- 视频识别车牌号(Python)
- python copy&deepcopy
- Python基础16-正则和子进程模块
- 【玩转 Cloud Studio】使用Cloud Studio 进行python开发最佳实践
- python批量获取同程酒店的信息
- java浅拷贝和深拷贝的区别_python的浅拷贝和深拷贝
- Python-基础03-流程控制
- 手把手教你用Python破解邻家小妹wifi密码
- python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
- python画图命令
- Python进阶43-drf框架(五)
- 【Python矩阵转置】| 试使用多方法实现[通俗易懂]
- 使用python进行词频分析
- Python进阶39-drf框架(一)
- 用Python的好处
- Python 进制转换函数及前缀截取
- 王力宏的瓜很大!我用Python爬取了瓜文评论区,发现更精彩
- Python面试基础知识_python自学需要哪些基础知识
- Python字典详细操作
- Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱