我想使用-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()
答案 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,则会得到一个可用的脚本。