Den*_*ang 5 python plot extrapolation
我有几个包含许多 x 和 y 值的数据集。值少得多的示例如下所示:
data_set1:
x1 y1
--------- ---------
0 100
0.0100523 65.1077
0.0201047 64.0519
0.030157 63.0341
0.0402094 62.1309
0.0502617 61.3649
0.060314 60.8614
0.0703664 60.3555
0.0804187 59.7635
0.0904711 59.1787
Run Code Online (Sandbox Code Playgroud)
data_set2:
x2 y2
--------- ---------
0 100
0.01 66.119
0.02 64.4593
0.03 63.1377
0.04 62.0386
0.05 61.0943
0.06 60.2811
0.07 59.5603
0.08 58.8908
Run Code Online (Sandbox Code Playgroud)
所以这里(对于本例)我有两个包含 10 个 x 值和 y 值的数据集。y 值始终不同,但在某些情况下 x 值会相同,有时它们会不同 - 正如本例所示。虽然不是很多,但它们仍然是不同的。将这两个数据集绘制成图表会产生两条不同的曲线,我现在想绘制两条曲线的平均曲线。如果 x 值相同,我将只取 y 值的平均值并将它们与 x 值进行比较,但如上所述,它们有时不同,有时相同。有没有某种方法可以推断,或者类似的东西,这样我就可以对值进行平均(同样,对于许多数据集)而无需“只是猜测”或说“它们几乎相同,所以只需平均就可以了y 值”。外推法似乎是一种可行的方法,但我从未在 python 中使用过它,也许还有更好的方法来做到这一点?
如果每个数据集中都有相同数量的点数(您的示例没有,但您在帖子中声明了),您可以x从每个集合中获取相应值的平均值,以及各自的y值。如果您没有相同数量的值,您可以按照这篇文章中的答案进行操作
例如,给定您的数据,但每个数据有 9 分:
>>> x1
array([0. , 0.0100523, 0.0201047, 0.030157 , 0.0402094, 0.0502617,
0.060314 , 0.0703664, 0.0804187])
>>> y1
array([100. , 65.1077, 64.0519, 63.0341, 62.1309, 61.3649,
60.8614, 60.3555, 59.7635])
>>> x2
array([0. , 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08])
>>> y2
array([100. , 66.119 , 64.4593, 63.1377, 62.0386, 61.0943,
60.2811, 59.5603, 58.8908])
Run Code Online (Sandbox Code Playgroud)
你可以做:
import numpy as np
mean_x = np.mean((x1,x2), axis=0)
mean_y = np.mean((y1,y2), axis=0)
Run Code Online (Sandbox Code Playgroud)
何时以视觉方式显示,您可以绘制。这里,黑线是你的平均线,蓝色和橙色线是你的原始数据集:
import matplotlib.pyplot as plt
plt.plot(x1,y1)
plt.plot(x2,y2)
plt.plot(mean_x,mean_y, color='black')
plt.show()
Run Code Online (Sandbox Code Playgroud)