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

ということxnew = np.linspace(-15000,15000,40)ですか?

すべてを正しく補間してプロットしましたが、補間された x 軸の範囲は 0 から 10 で、最初の x 軸の範囲は -15000 から 15000 です。したがって、補間されたデータ ポイントはすべて (0,5.5) の周りにあります。グラフに点が表示されます。

于 2013-10-25T08:09:31.780 に答える
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)

実行

上記のコードは、 を使用して 2 つのリストを単純に結合します。zipつまり、両方の値をタプルとして並べて取得できます。ドキュメントから引用するには:

この関数は、タプルのリストを返します。i 番目のタプルには、各引数シーケンスまたは iterable の i 番目の要素が含まれます。返されるリストは、最短の引数シーケンスの長さに切り捨てられます。すべて同じ長さの引数が複数ある場合、zip() は最初の引数が None の map() に似ています。単一のシーケンス引数を指定すると、1 タプルのリストが返されます。引数がない場合、空のリストが返されます。

コンソールの例を次に示します。

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