问题描述
我正在尝试获取x,y,z点之间的高程值。像这样使用scipy.interpolate.interp2d:
x = np.array((140.865,140.863))
y = np.array((59.8817,59.8814))
z = np.array((121,127))
f = scipy.interpolate.interp2d(x,y,z,kind="linear")
z_new = f(140.864,59.58816)
我收到以下错误:
TypeError: m >= (kx+1)(ky+1) must hold
我没有找到关于此类型错误的清晰文档。也许我为interp2d使用的数据点太少了?
解决方法
根据文档here:
插值所需的最小数据点数 轴为(k + 1)** 2,其中k = 1表示线性,k = 3表示三次,k = 5表示 五次插值。
并且由于您使用linear
,所以(1 + 1)** 2 = 4,很遗憾,您仅提供了两个数据点。