python中的1D立方和线性插值

时间:2016-09-25 23:21:57

标签: python-2.7 scipy

我想使用-2.5 to 2.0命令从np.linspace()插入8个数据点并完全理解这些数字应该是非负的,但是当我运行我的代码时,我得到一个错误raise ValueError("x and y arrays must be equal in length along " ValueError: x and y arrays must be equal in length along interpolation axis.以下是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d


X = np.linspace(-2.5, 2.0, num=8, endpoint=True)
Y = np.linspace(1, 44, num=44, endpoint=True)

f = interp1d(X,Y)
f2 = interp1d(X, Y, kind='cubic')

Xnew = np.linspace(-2.5, 2.0, num=44, endpoint=True)

plt.plot(X, Y, 'o', Xnew, f(Xnew), Xnew, f2(Xnew), '--'  )
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show()

1 个答案:

答案 0 :(得分:4)

正如异常所示,您提供了不同长度的数组。

看一下这部分文档:

  

num:int,可选   要生成的样本数。默认值为50.必须为非负数。

X = np.linspace(-2.5, 2.0, num=8, endpoint=True)
Y = np.linspace(1, 44, num=44, endpoint=True)

您生成8个X值和44个Y值。考虑到长度不匹配,没有明确的方法来生成(x,y)点。 如果为每个数组选择相同的num,则会得到一个可用的脚本。