-1

次のような等間隔の数字があります。

x 1 2 3 4 y

x開始値と終了値がわかりませんyxより大きいか、yまたはその逆です。私が知っているのは、中間値の値とリスト内の順序だけです。つまり11(xのインデックスは0)のインデックス2を持ち、 のインデックスを持ち2ます。

その間の数もわかっているので、この場合は 4 です。

この情報を見つけxて使用できるように、これを定式化する方法はありますか?y

編集:詳細:

x != y

x > yまたy > x

プログラムは、要求されたアイテムの数を使用xして指定された数を生成しました。yしたがって、各値に同じ増分を使用して、x から y への線形補間を行います。

4

1 に答える 1

1

私があなたを正しく理解していれば、線形外挿のようなものが必要です。これを試して:

def get_xy(values):
    assert(len(values) >= 2)
    #(v1) use the first gain
    m = values[1] - values[0]
    #(v2) calculate the mean-gain
    #     (avg of v[i+1]-v[i])
    m = sum(float(x-y) for x,y in zip(values[1:], values[:-2])) / (len(values) - 1)
    return (values[0] - 1*m, values[-1] + 1*m)

print get_xy([ 1, 2, 3, 4])
print get_xy([-1,-2,-3,-4])
x,y = get_xy([ 1, 2, 3, 4])
print x,y # if you are unfamilar with tuples

v(1)より太いですが、すべての要素が同じ値でインクリメント/デクリメントされる場合にのみ機能します(シーケンスがa(n+1) - a(n) == a(n+2) - a(n+1)すべてのn場合a)。v(2)すべての要素の平均ゲインを計算します。値が float にキャストされることに注意してください。

于 2013-02-22T13:16:53.457 に答える