有没有一种程序化的方法来查找系列的开头和结尾?

时间:2013-02-22 12:23:28

标签: python math linear-algebra

我有一个像这样的间隔数字:

x 1 2 3 4 y

我不知道开始和结束值xyx可能大于y,反之亦然。我所知道的是中间值及其在列表中的顺序的值,即1的索引为1x的索引为0),{ {1}}的索引为2,依此类推。

我也知道其间有多少数字,所以在这种情况下为4。

有没有办法制定这个,以便我可以使用此信息找到2x

编辑:更多信息:

y

x != y x > y

在给定请求项目数的情况下,程序使用y > xx生成中间数字。因此,从x到y的线性插值,对每个值使用相同的增量。

1 个答案:

答案 0 :(得分: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 av(2)将计算所有元素的平均增益。请注意,值将转换为float。