代码之家  ›  专栏  ›  技术社区  ›  Denver Dang

得到几个x值不相同的曲线的平均曲线

  •  0
  • Denver Dang  · 技术社区  · 8 年前

    我有几个包含许多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
    

    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
    

    在这里我有两个数据集,包含10个x和y值。y值总是不同的,但在某些情况下,x值是相同的,有时它们也会不同-在本例中就是这样。虽然不是很多,但它们还是不同的。将这两个数据集绘制成一个图形会产生两条不同的曲线,现在我想将这两条曲线都绘制成一条平均曲线。如果x值是相同的,我就取y值的平均值,并将它们与x值进行比较,但如前所述,它们有时是不同的,有时是相同的。 有没有什么方法可以外推,或者类似的东西,这样我就可以平均这些值(同样,对于许多数据集),而不用“仅仅猜测”或者说“它们几乎是一样的,所以平均y值就可以了”。 推断似乎是一种可行的方法,但我从来没有在python中使用过它,也许还有更好的方法可以做到这一点?

    1 回复  |  直到 8 年前
        1
  •  2
  •   sacuL    8 年前

    如果每个数据集中都有相同数量的点(示例中没有,但在文章中声明了),则可以只得到每个数据集的平均值 x 每组的值,以及 y this post

    例如,给出了你的数据,但每个数据有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])
    

    你可以:

    import numpy as np
    
    mean_x = np.mean((x1,x2), axis=0)
    mean_y = np.mean((y1,y2), axis=0)
    

    什么时候可以直观地显示,你可以绘图。在这里,黑线是您的平均线,蓝线和橙线是您的原始数据集:

    import matplotlib.pyplot as plt
    plt.plot(x1,y1)
    plt.plot(x2,y2)
    plt.plot(mean_x,mean_y, color='black')
    plt.show()
    

    enter image description here

    推荐文章