我有一个像这样的间隔数字:
x 1 2 3 4 y
我不知道开始和结束值x
和y
。 x
可能大于y
,反之亦然。我所知道的是中间值及其在列表中的顺序的值,即1
的索引为1
(x
的索引为0
),{ {1}}的索引为2
,依此类推。
我也知道其间有多少数字,所以在这种情况下为4。
有没有办法制定这个,以便我可以使用此信息找到2
和x
?
编辑:更多信息:
y
x != y
或x > y
在给定请求项目数的情况下,程序使用y > x
和x
生成中间数字。因此,从x到y的线性插值,对每个值使用相同的增量。
答案 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
a
。 v(2)
将计算所有元素的平均增益。请注意,值将转换为float。