0

您好,我正在尝试获取下面的插值函数。

data1 = [15000, 11000, 8000, 4000, +1000, +552, 0, -708, -8000, -8, 10000, +15000]
data2 = [10,9,8,7,6,5,4,0,3,2,1]

data1  data2
15000   10
11000    9
 8000    8
 4000    7
 1000    6
  552    5
   ..   ..

我尝试了以下代码,但图表是不变的,因为我使用行空间作为其步骤。我怎样才能获得上表..

x = np.linspace(-15000,15000,10) 
y = [10,9,8,7,6,5,4,3,2,1]

f = interpolate.interp1d(x,y)
f2 = interpolate.interp1d(x,y,kind='linear')
xnew = np.linspace(0,10,40)
plt.plot(x,y,'o',xnew,f(xnew),'-', xnew, f2(xnew),'--')
plt.show()

显示的输出 在此处输入图像描述

4

2 回答 2

1

也许这就是您正在寻找的:

data1 = [15000, 11000, 8000, 4000, +1000, +552, 0, -708, -8000, -8, 10000, +15000]
data2 = [10, 9, 8, 7, 6, 5, 4, 0, 3, 2, 1]

print "{0:10}{1:10}".format("Data 1", "Data 2")
for var1, var2 in zip(data1, data2):
    print "{0:<10}{1:<10}".format(var1, var2)

运行示例

上面的代码简单地组合了两个列表,使用zip,这意味着,您可以将它们的值作为一个元组并排获取。从文档中引用:

此函数返回一个元组列表,其中第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。返回的列表在长度上被截断为最短参数序列的长度。当有多个长度相同的参数时,zip() 类似于 map(),初始参数为 None。使用单个序列参数,它返回一个 1 元组列表。没有参数,它返回一个空列表。

这是一个控制台示例:

>> zip([2,3,11,3], [5,6,77,1])
[(2, 5), (3, 6), (11, 77), (3, 1)]
于 2013-10-25T08:00:34.647 回答
1

你的意思是xnew = np.linspace(-15000,15000,40)

您正确插值并绘制了所有内容,但是插值的 x 轴范围从 0 到 10,而初始 x 轴的范围从 -15000 到 15000。因此,所有插值数据点都在 (0,5.5) 左右。您可以在图表上看到一个点。

于 2013-10-25T08:09:31.780 回答