scipy的interpn用于插入高N数据

时间:2015-03-28 12:07:38

标签: python numpy multidimensional-array scipy interpolation

我尝试使用scipy.interpolate.interpn插入一些数据。它可能不是正确的功能,所以如果不是,请告诉我。我需要插入3个变量,其中每个变量有2个值(总共8个),直到单个点。

以下是N = 2(我认为)的工作示例。

from scipy.interpolate import interpn
import numpy as np
points = np.zeros((2, 2))
points[0, 1] = 1
points[1, 1] = 1
values = np.array(([ 5.222, 6.916], [6.499, 4.102]))
xi = np.array((0.108, 0.88))

print(interpn(points, values, xi))  # Gives: 6.462

但是当我尝试将它用于更高维度时,它会破坏。我感觉这是因为我的阵列是如何构建的。

p2 = np.zeros((2, 2, 2))
p2[0,0,1] = 1
p2[0,1,1] = 1
p2[1,0,1] = 1
p2[1,1,1] = 1
v2 = np.array([[[5.222,4.852],
                [6.916,4.377]],
               [[6.499,6.076],
                [4.102,5.729]]])
x2 = np.array((0.108, 0.88, 1))
print(interpn(p2, v2, x2))

这给了我以下错误消息:

/usr/local/lib/python2.7/dist-packages/scipy/interpolate/interpolate.pyc in interpn(points, values, xi, method, bounds_error, fill_value)
   1680         if not np.asarray(p).ndim == 1:
   1681             raise ValueError("The points in dimension %d must be "
-> 1682                              "1-dimensional" % i)
   1683         if not values.shape[i] == len(p):
   1684             raise ValueError("There are %d points and %d values in "

ValueError: The points in dimension 0 must be 1-dimensional

如何修复代码?请记住,我需要插入3个变量,每个变量有2个值(v2.shape = (2, 2, 2))。

0 个答案:

没有答案