Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用线性插值器(Python)的三维插值_Python_Python 2.7_Multidimensional Array_Scipy_Interpolation - Fatal编程技术网

使用线性插值器(Python)的三维插值

使用线性插值器(Python)的三维插值,python,python-2.7,multidimensional-array,scipy,interpolation,Python,Python 2.7,Multidimensional Array,Scipy,Interpolation,我想使用scipy LINEARDINTERPOLATOR函数(Python 2.7)插入一些三维数据。不过,我不太明白如何使用它:下面是我的尝试。我得到了错误值error:不同数量的值和点数。这让我相信“coords”的形状不适合这些数据,但在文档中看起来这个形状还可以 请注意,在我真正想要使用的数据(而不是本例)中,我的网格的间距是不规则的,因此类似RegularGridInterpolator的东西不会起作用 非常感谢你的帮助 def f(x,y,z): return 2 * x*

我想使用scipy LINEARDINTERPOLATOR函数(Python 2.7)插入一些三维数据。不过,我不太明白如何使用它:下面是我的尝试。我得到了错误值error:不同数量的值和点数。这让我相信“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))
您的输入(
coords
data
)具有形状(2,2,2)和(8,3)。对吗?我觉得这不对劲。在文档中,每个输入的第一个dim(
npoints
)必须相同!由于函数从三个参数返回一个值,所以坐标应为(N,3),数据应为(N,1)。输入(
coords
data
)具有形状(2,2,2)和(8,3)。对吗?我觉得这不对劲。在文档中,每个输入的第一个dim(
npoints
)必须相同!因为您的函数从三个参数返回一个值,所以坐标应该是(N,3),数据应该是(N,1)。