son*_*olo 7 python interpolation numpy scipy
我正在创建一个 Scipy Interpolate 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)
Run Code Online (Sandbox Code Playgroud)
然后我尝试传入一个 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))
Run Code Online (Sandbox Code Playgroud)
我收到如下错误:
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
Run Code Online (Sandbox Code Playgroud)
当我将 grid=False 参数传递给该方法时,此错误得到纠正。
我从文档中得到的印象是,如果输入网格坐标形成一个规则网格,那么网格参数应该是 True。有什么我想念的吗?
是的,这里的文档可能有点薄弱。您使用的默认调用期望 x 和 y 定义网格点。与创建样条拟合的原始调用一样,这些需要严格按升序排列。然后它将返回样条插值的完整网格。
如果您改为使用 RectBivariateSpline.ev(xi,yi),在您的情况下调用 rect_B_spline.ev(a,b),您将在 (xi[0],yi[0]), ..., (xi[j],yi[j]) 数据对。
不太确定你在这里想要哪个 - 如果你想要一个完整的 x x y 网格,让每个 x,y 中的点严格升序。如果您想要一系列点的结果,请使用 .ev(x,y) 方法。
归档时间: |
|
查看次数: |
9410 次 |
最近记录: |