哈尔滨 做网站,小程序制作免费吗,wordpress 自动,濮阳网站设计通常来说#xff0c;一维插值有很多方法#xff0c;也比较容易实现。griddata()函数则是可以方便实现二维插值。
例#xff1a;图中有9个网格点#xff0c;横坐标为a#xff0c;纵坐标为b#xff0c;蓝色的数字是这个点的函数值。
#xff08;不好意思#xff0c;例子…通常来说一维插值有很多方法也比较容易实现。griddata()函数则是可以方便实现二维插值。
例图中有9个网格点横坐标为a纵坐标为b蓝色的数字是这个点的函数值。
不好意思例子比较简单我直接手画了 由于整个网格由离散点组成当我们想知道 (1.5, 1.5) 或者 (2.5, 2.5) 的坐标值的时候是无法直接获取的只能通过二维的插值来得到如下图。 这个时候就可以采用griddata()函数代码如下
import numpy as np
from scipy.interpolate import griddataa [1,2,3]
b [1,2,3]
ans [4,5,6,3,4,5,2,3,4]
A,B np.meshgrid(a,b)
# print(A)
# print(B)
X_star np.hstack((A.flatten()[:,None], B.flatten()[:,None]))
# print(X_star)m [1.5,2.5]
n [1.5,2.5]
M,N np.meshgrid(m,n)
U griddata(X_star, ans, (M, N), methodcubic)
print(U)
打印出U为
[[4.00000001 5.00000007] [2.99999996 3.99999998]]
为了方便检验其实例子中的函数值就是两个坐标点加一块的值。这四个坐标的正确值应该为4、5、3、4可以看到插值的结果还挺准确的。 注意事项此函数只能对在原本网格范围内的点进行插值超出原本网格范围的值则会被设置为nan。 比如初始的网格是[1,2,3], [1,2,3]而我去插入 (1.5, 999) 处的值这明显不可能函数就直接输出nan。