python插值方法scipy.interpolate.interp2d注意事项
2021/9/8 14:07:08
本文主要是介绍python插值方法scipy.interpolate.interp2d注意事项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
python插值方法scipy.interpolate.interp2d注意事项
- python插值方法scipy.interpolate.interp2d注意事项
- 问题
- scipy.interpolate.interp2d的使用
- 变化说明
python插值方法scipy.interpolate.interp2d注意事项
问题
在使用scipy.interpolate.interp2d对数据插值时,发现输出的数据图像并不相同,然后找了一下原因。
坐标用的是经纬度数据,粗细的纬度数据都是从60~-60这样排列的,原因应该就是插值完的输出坐标应该都是从小到大排序(即从负到正),因此导致不同。
scipy.interpolate.interp2d的使用
scipy.interpolate.interp2d
官方文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html#scipy.interpolate.interp2d
例子如下:
import numpy as np import matplotlib.pyplot as plt from scipy import interpolate x = np.arange(-3.01, 5.01, 0.25) y = np.arange(-1.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') xnew = np.arange(5.01, -3.01, -1e-2) ynew = np.arange(-1.01, 5.01, 1e-2) znew = f(xnew, ynew) #插值后的数据
展示结果
plt.imshow(z)
plt.imshow(znew)
变化说明
如果把x
换成从正到负的横坐标列:
x = np.arange(5.01, -3.01, -0.25) y = np.arange(-1.01, 5.01, 0.25) xx, yy = np.meshgrid(x, y) z = np.sin(xx**2+yy**2) plt.imshow(z)
直接画图有:
但是如果把xnew
换成从正到负的横坐标列,这时产生的znew
的横坐标并不与xnew
对应,而是从小到大从负到正:
x = np.arange(-3.01, 5.01, 0.25) y = np.arange(-1.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') xnew = np.arange(5.01, -3.01, -1e-2) ynew = np.arange(-1.01, 5.01, 1e-2) znew = f(xnew, ynew) plt.imshow(znew)
应该就是不管设定的坐标顺序是怎样,查之后的结果都是按照坐标从小到大排列的。
如果是用于地理信息数据的插值的时候要注意。
这篇关于python插值方法scipy.interpolate.interp2d注意事项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南