如何计算 3D 数组中项目的平均值?

How to calculate average value of items in a 3D array?

我正在尝试获取参数的平均值,然后使用给定函数进行绘图。我想我必须以某种方式填充一个 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))