Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一个程序化的方法来找到一个系列的开始和结束?_Python_Math_Linear Algebra - Fatal编程技术网

Python 有没有一个程序化的方法来找到一个系列的开始和结束?

Python 有没有一个程序化的方法来找到一个系列的开始和结束?,python,math,linear-algebra,Python,Math,Linear Algebra,我有一个等间距的数字,如下所示: x 1 2 3 4 y 我不知道起始值和结束值x和yx可以大于y,反之亦然。我只知道中间值的值及其在列表中的顺序,即1的索引为1(x的索引为0),2的索引为2,等等 我也知道中间有多少个数字,所以在这个例子中是4 是否有一种方法可以表述这一点,以便我可以使用此信息找到x和y 编辑:更多信息: x != y x>y或y>x 给定请求的项目数量,程序使用x和y生成中间的数字。所以从x到y的线性插值,每个值使用相同的增量。如果我理解正确,你需要类似线性外推的东西。

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

x 1 2 3 4 y
我不知道起始值和结束值
x
y
x
可以大于y,反之亦然。我只知道中间值的值及其在列表中的顺序,即
1
的索引为
1
x
的索引为
0
),
2
的索引为
2
,等等

我也知道中间有多少个数字,所以在这个例子中是4

是否有一种方法可以表述这一点,以便我可以使用此信息找到
x
y

编辑:更多信息:

x != y
x>y
y>x


给定请求的项目数量,程序使用
x
y
生成中间的数字。所以从x到y的线性插值,每个值使用相同的增量。

如果我理解正确,你需要类似线性外推的东西。试试这个:

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)
将计算所有元件的平均增益。请注意,这些值被转换为浮点。

根据您目前所说的,还不清楚这些
x
y
与系列其余部分之间的关系,因此我认为,您需要进一步阐述这个问题。比如说,
012340
是一个有效的序列吗?如果不是,是什么使它无效?顺便说一句,
线性代数
标记在这里似乎不适用。@Zhenya这就是问题的关键吗?通过观察序列,我们可以推断在这个简单的例子中,
x
应该是零,
y
应该是5。我不知道我们如何制作一个程序来做到这一点,特别是对于更难的序列。然而,我想这就是他们要问的。好吧,我会添加更多的信息,但基本上中间的数字是用x和y计算的(不是由我计算的),从
x
开始,到
y
结束,根据中间所需的项目数量,以相等的增量。好吧,你的评论表明你已经解决了自己的问题。如果序列中的元素间隔相等,只需从第一个和最后一个已知值中减去/加上该空间即可。@GarethWebber:有无限多个序列,其中任意数量的特定元素重合。因此,为了“推断”缺失的值,需要一条规则来构造序列。或者,其他可能的问题可能是:给定序列中的一组数字,构造一个可能的规则——这个问题没有唯一的答案。因此,要求OP澄清具体的问题。