2016-09-25 61 views
0

立方体和线性插值我想通过np.linspace()命令从-2.5 to 2.0插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.错误这里是我的代码:1D在python

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() 

回答

3

正如异常读取您提供了不同长度的数组。

看看文档的这一部分:

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)点。 如果你为每个数组选择相同的数字,你会得到一个工作脚本。