推断趋势线Python



你好,我有这个python代码,它基于两个枢轴计算趋势线,然后将其外推到未来。我想知道如何获得外推趋势线值的矢量(在列表中)-例如从1000到1050?我需要这个向量来作用于它。到目前为止,我只能绘制这些值。

import numpy as np
import matplotlib.pyplot as plt
y = np.array([13.6700,14.4900])
x = np.array([992,1000])
x2=np.array([1001,1010])
p = np.polyfit(x, y, 1)
f = np.poly1d(p)
plt.plot(x, y, 'bo', label="Data")
plt.plot(x,f(x), 'r:',label="Polyfit")
plt.plot(x2,f(x2), 'b-',label="Polyfit")
print(p)
print(f(x2))
f(1010)

您可以使用numpy.arange创建x数组并应用f:

import numpy as np
xs = np.arange(1000, 1051)
ys = f(xs)

输出:

>>> xs
array([1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
1044, 1045, 1046, 1047, 1048, 1049, 1050])
>>> ys
array([14.49  , 14.5925, 14.695 , 14.7975, 14.9   , 15.0025, 15.105 ,
15.2075, 15.31  , 15.4125, 15.515 , 15.6175, 15.72  , 15.8225,
15.925 , 16.0275, 16.13  , 16.2325, 16.335 , 16.4375, 16.54  ,
16.6425, 16.745 , 16.8475, 16.95  , 17.0525, 17.155 , 17.2575,
17.36  , 17.4625, 17.565 , 17.6675, 17.77  , 17.8725, 17.975 ,
18.0775, 18.18  , 18.2825, 18.385 , 18.4875, 18.59  , 18.6925,
18.795 , 18.8975, 19.    , 19.1025, 19.205 , 19.3075, 19.41  ,
19.5125, 19.615])

或者,如果你想要边界和固定数量的点,使用numpy.linspace:

xs = np.linspace(1000, 1050, 200) # 200 points between 1000 and 1050
ys = f(xs)

最新更新