-1

我有一个等距的数字,如下所示:

x 1 2 3 4 y

我不知道开始和结束值xy. x可以大于y或反之亦然。我只知道中间值的值及其在列表中的顺序,即1索引为1(x的索引为0),2索引为2,依此类推。

我也知道中间有多少个数字,在这种情况下是 4 个。

有没有办法制定这个,所以我可以找到xy使用这些信息?

编辑:更多信息:

x != y

x > y或者y > x

该程序使用xy给定请求的项目数量生成中间的数字。所以从 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)将计算所有元素的平均增益。请注意,这些值被转换为浮点数。

于 2013-02-22T13:16:53.457 回答