使用LinearNDInterpolator(Python)进行三维插值

时间:2016-07-25 19:41:23

标签: python python-2.7 multidimensional-array scipy interpolation

我想使用scipy LinearNDInterpolator函数(Python 2.7)插入一些3-d数据。但我无法弄清楚如何使用它:下面是我的尝试。我收到错误ValueError:不同数量的值和点。这让我相信“coords”的形状不适合这些数据,但它在文档中看起来就像形状没问题。

请注意,在我真正想要使用的数据中(而不是这个例子),我的网格间距是不规则的,所以像RegularGridInterpolator这样的东西是不行的。

非常感谢你的帮助!

def f(x,y,z):
    return 2 * x**3 + 3 * y**2 - z

x = np.linspace(1,2,2)
y = np.linspace(1,2,2)
z = np.linspace(1,2,2)


data = f(*np.meshgrid(x, y, z, indexing='ij', sparse=True))

coords = np.zeros((len(x),len(y),len(z),3))
coords[...,0] = x.reshape((len(x),1,1))
coords[...,1] = y.reshape((1,len(y),1))
coords[...,2] = z.reshape((1,1,len(z)))
coords = coords.reshape(data.size,3)

my_interpolating_function = LinearNDInterpolator(coords,data)


pts = np.array([[2.1, 6.2, 8.3], [3.3, 5.2, 7.1]])
print(my_interpolating_function(pts))

0 个答案:

没有答案