【问题标题】:Normal Fit from experimental data来自实验数据的正态拟合
【发布时间】:2020-08-24 07:05:54
【问题描述】:

大家好 我想从从实验结果中获得的一组数据中获得正态拟合。由于我从 python 开始,我不知道从哪里开始。这是我的实验数据。它的粒度分布。我想获得平均值和标准。 x 是大小,y 是频率。

提前感谢您的帮助!

import matplotlib.pyplot as plt
import numpy as np



x=([0.251839516,0.490440575,0.744647994,0.990643452,1.244142316,1.488611658,1.741274792,1.986416351,2.232538986,2.495993944,2.736393641,2.985059803,3.241792581,3.497435276,3.744829674,3.991788039,4.23860106])
y=([0.271164269,0.492366389,1.256781226,2.468772142,4.479769871,8.376708554,11.85803482,14.57231794,15.56056321,14.05547313,11.11227252,7.625604845,3.947070401,2.186355791,0.937144587,0.455061317,0.228687358])
plt.scatter(x,y,color='red',label='Experiment')

【问题讨论】:

标签: python normal-distribution


【解决方案1】:

如果你想使用 SciPy,你有 scipy.stats.norm:

from scipy.stats import norm
mu, std = norm.fit(data)

【讨论】:

  • norm.fit(data) 在我的情况下不起作用,因为我有两个数组。 :(
【解决方案2】:

使用numpy.meannumpy.std

x = np.array([...])
x.mean()
x.std()

【讨论】:

    【解决方案3】:

    使用此代码

    from scipy.stats import norm as normalDist
    x=([0.251839516,0.490440575,0.744647994,0.990643452,1.244142316,1.488611658,1.741274792,1.986416351,2.232538986,2.495993944,2.736393641,2.985059803,3.241792581,3.497435276,3.744829674,3.991788039,4.23860106])
    y=([0.271164269,0.492366389,1.256781226,2.468772142,4.479769871,8.376708554,11.85803482,14.57231794,15.56056321,14.05547313,11.11227252,7.625604845,3.947070401,2.186355791,0.937144587,0.455061317,0.228687358])
    points = list(zip(*(x, y)))
    mu, std = normalDist.fit(points)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-03
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2013-03-06
      • 2020-12-04
      • 2021-10-23
      相关资源
      最近更新 更多