Как рассчитать среднюю стоимость предметов в 3D массиве? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь получить среднее значение для параметров, чтобы затем построить с заданной функцией. Я думаю, что я должен как-то заполнить массив из 3 столбцов, а затем взять среднее значение этого массива. Я хочу создать 1000 значений для popt [0], popt [1] и popt [2], а затем взять среднее из всех этих значений и затем построить их.

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

Конечная цель состоит в том, чтобы plot:

fluxmeasureMW(bands,a_avg,b_avg,e_avg)

Я просто не уверен, как итерировать функцию подгонки, чтобы затем вывести 1000 значений. 1000 произвольно, я просто хочу хороший размер выборки. Значения y2 и полос уже определены и могут быть нанесены без проблем, а также функция fluxmeasureMW.

1 Ответ

0 голосов
/ 12 апреля 2020

Скажите, что ваша функция такая:

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