Скажите, что ваша функция такая:
def fluxmeasureMW(x,f,g,h):
return result_of_calc
Просто запустите подгонку в цикле; накапливать попсы в списке, а затем принять среднее значение
from scipy import optimize
import numpy as np
n = 1000
t = []
for i in range(n):
y3 = y2 + np.random.normal(loc=0.0,scale=.1*y2)
popt,pcov = optimize.curve_fit(fluxmeasureMW,bands,y3)
t.append(popt)
f,g,h = np.mean(t,0)
t
будет список списков ...
[[f,g,h],
[f,g,h],
...]
np.mean(t,0)
будет усреднять значения по столбцам .
Вы также можете использовать
import statistics
a = [[0, 1, 2],
[1, 2, 3],
[2, 3, 4],
[3, 4, 5]]
for column in zip(*a):
#print(column)
print(statistics.mean(column))