获取 x 值不相同的多条曲线的平均曲线

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 中使用过它,也许还有更好的方法来做到这一点?

sac*_*cuL 8

如果每个数据集中都有相同数量的点数(您的示例没有,但您在帖子中声明了),您可以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)

在此输入图像描述