如何计算三维数组中项目的平均值



我正试图获得参数的平均值,然后用给定的函数绘制。我想我必须以某种方式填充一个3列数组,然后取该数组值的平均值。我想为popt[0]、popt[1]和popt[2]创建1000个值,然后取所有这些值的平均值,然后绘制它们。

for n in range(0,1000):
params=np.zeros(3,1000)
y3=y2+np.random.normal(loc=0.0,scale=0.1*y2)
popt,pcov=optimize.curve_fit(fluxmeasureMW,bands,y3)
params.append(popt[0],popt[1],popt[2])
a_avg=st.mean(params[0:])
b_avg=st.mean(params[1:])
e_avg=st.mean(params[2:])

最终目标是绘制:

fluxmeasureMW(bands,a_avg,b_avg,e_avg)

我只是不知道如何迭代拟合函数,然后输出1000个值。1000是任意的,我只想要一个好的样本量。y2和频带的值已经定义,可以毫无问题地绘制,以及函数fluxmeasureMW。

假设你的函数是这样的

def fluxmeasureMW(x,f,g,h):
return result_of_calc

只需循环健身;在列表中累积popts,然后取平均

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))

最新更新