scipy.interpolate中的Cubic Spline函数返回一个numpy.ndarray

时间:2018-06-07 16:38:44

标签: python scipy interpolation

我需要使用CubicSpline在点之间进行插值。这是我的功能

cs = CubicSpline(aTime, aControl)
u = cs(t)   # u is a ndarray of one element.

我无法将u转换为浮点数。 uu = float(u)uu = float(u[0])在该功能中无效。 我可以通过ufloat(u)转换为shell中的浮点数。这不应该工作,因为我没有提供索引但是如果我使用u[0]我会收到错误。 我读过有关np.squeeze的内容。我尝试过但它没有帮助。

我在print ("u=",u)之后添加了u=cs(t)语句。结果是

u= [  1.88006889e+09   5.39398193e-01   5.39398193e-01]

这怎么可能?我期望1值。第二个和第三个数字看起来是正确的。

1 个答案:

答案 0 :(得分:0)

我发现了问题。编程错误,当然但我得到的错误信息非常误导。我用3个值调用插值函数,因此它返回了三个值。为什么我之后不能得到一个仍然是一个谜但现在我只用一个值调用插值我得到一个浮动按预期。总的来说,这仍然没有帮助,因为interpolate1d函数太慢了。我编写了自己的三次插值函数,速度更快。

同样,编程错误和错误的错误消息是问题所在。