我尝试使用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)
)。