【发布时间】:2018-06-02 17:09:10
【问题描述】:
我有一些以(x, y, z, V) 形式出现的数据,其中 x,y,z 是距离,V 是湿度。我在 StackOverflow 上阅读了很多关于 Python 插值的内容,例如 this 和 this 有价值的帖子,但所有这些都是关于 x, y, z 的常规网格。即x 的每个值与y 的每个点和z 的每个点的贡献相同。另一方面,我的观点来自 3D 有限元网格(如下所示),其中网格不规则。
提到的两个帖子1 和2 将x、y、z 中的每一个定义为一个单独的numpy 数组,然后他们使用cartcoord = zip(x, y) 和scipy.interpolate.LinearNDInterpolator(cartcoord, z) 之类的东西(在3D 示例中)。我不能这样做,因为我的 3D 网格不规则,因此不是每个点都对其他点有贡献,所以如果我重复这些方法时,我会发现很多空值,并且出现很多错误。
这里是[x, y, z, V]形式的10个样本点
data = [[27.827, 18.530, -30.417, 0.205] , [24.002, 17.759, -24.782, 0.197] ,
[22.145, 13.687, -33.282, 0.204] , [17.627, 18.224, -25.197, 0.197] ,
[29.018, 18.841, -38.761, 0.212] , [24.834, 20.538, -33.012, 0.208] ,
[26.232, 22.327, -27.735, 0.204] , [23.017, 23.037, -29.230, 0.205] ,
[28.761, 21.565, -31.586, 0.211] , [26.263, 23.686, -32.766, 0.215]]
我想得到点(25, 20, -30)的插值V
我怎样才能得到它?
【问题讨论】:
标签: python numpy 3d scipy interpolation