如果您有特定的功能,您可以使用scipy.optimize.curve_fit 拟合曲线,或者如果您确信“等等”总是符合某个多项式,您可以使用numpy.polyfit -你的例子都是线性的,所以这只是一个 1 次多项式。
这里是一个使用 numpy.polyfit 的例子:
import numpy as np
model = np.polyfit([0,1], [1,2],deg=1)
这将接受您的值 [1,2] 并将它们映射到位置值 [0,1],然后再计算最适合其序列的 1 度多项式。
然后,您需要一个函数来使用模型来预测序列中的第 n 个值(或者,使用 poly1d)但这里有一个简单的多项式计算器函数,它接受系数作为第一个参数,x 的值您要为其返回多项式的结果:
def poly(coeffs, x):
accumulator=0
n = len(coeffs)-1
for e,i in enumerate(coeffs):
accumulator = accumulator + (i*(x ** (n-e)))
return accumulator
因此,我们已经在索引为 0,1 的序列上对其进行了训练 - 索引为 2 的第 3 点的答案通过以下方式找到:
poly(model,2)
返回预期值 3。
这是一个使用序列[3,6,9,12]的示例:
model = np.polyfit([0,1,2,3], [3,6,9,12],deg=1)
poly(model,4)
给出答案 15。(好的,15.000000000000002,但它已经足够接近了 - 如果你确信你总是会得到整数答案,那么你可以四舍五入到最接近的整数 - 或者选择某种程度的精度'很舒服)
这都是线性的,对于二次模型,您可以将 deg=1 设置为 deg=2 等等。
这不会为您找到更多有趣的模式,这些模式没有多项式来描述它们。 On-Line Encyclopedia of Integer Sequences 有一个 巨大 的此类序列列表,但示例可能包括 The Fibonacci Sequence、The Prime Number Sequence 或 Triangular Numbers 对于这些更有趣的示例,您需要想出一个更细致入微的方法。