我正在创建一个Scipy插值的RectBivariateSpline,如下所示:
import numpy as np
from scipy.interpolate import RectBivariateSpline
x = np.array([1,2,3,4])
y = np.array([1,2,3,4,5])
vals = np.array([
[4,1,4,4,2],
[4,2,3,2,6],
[3,7,4,3,5],
[2,4,5,3,4]
])
rect_B_spline = RectBivariateSpline(x, y, vals)
然后我尝试传入一个x和y点数组:
a = np.array([3.2, 3.8, 2.2])
b = np.array([2.4, 4.3, 3.3])
print(rect_B_spline(a, b))
我得到的错误如下:
Traceback (most recent call last):
File "path/file", line 18, in <module>
print(rect_B_spline(a, b))
File "/path/scipy/interpolate/fitpack2.py", line 728, in __call__
raise ValueError("Error code returned by bispev: %s" % ier)
ValueError: Error code returned by bispev: 10
当我将grid=False参数传递给方法时,此错误得到了纠正。
我对documentation的印象是,如果输入的网格坐标形成一个规则的网格,那么网格参数应该为True。我有什么遗漏吗?
这是有效的:
我按照文档中的说明对这些值进行了排序:
是的,这里的文档可能有点弱。您使用的默认调用要求x和y定义网格点。与创建样条曲线拟合的原始调用一样,这些函数需要严格按升序排列。然后它将返回样条曲线插值的完整网格。
如果你使用矩形变量PLIN EV(席,彝),在你的例子中调用矩形Buth.Type。EV(A,B),你得到在每个(席席[0,Y](0)],…,(XI[J],Y[j])数据对中评估的样条。
不太确定你想要在这里-如果你想要一个完整的x,y网格,使每个点在x,y严格上升。如果要在一系列点上获得结果,请使用.ev(x,y)方法。
相关问题 更多 >
编程相关推荐