【发布时间】:2015-07-07 16:44:14
【问题描述】:
我想知道如何向数组添加属性。
当我这样做时
errors1 = pm.Uniform('errors', 0, 100, size = 7)
添加了名称“错误”。
但是当我这样做时
errors2 = [errors1[1], errors1[3], errors1[6]]
我不知道如何添加该名称,并且因为我没有添加它,所以当我尝试创建一个有错误2 的模型时,我收到一个错误,说它没有属性名称。
这是我的完整代码:
import pymc as pm
from matplotlib import pyplot as plt
from pymc.Matplot import plot as mcplot
import numpy as np
from matplotlib import rc
first_res = [-27.020,3.570,8.191,9.898,9.603,9.945,10.056]
second_res = [18.752, 12.450, 11.832]
v1 = pm.Uniform('v1', -30, 15)
v2 = pm.Uniform('v2', 0, 20)
errors1 = pm.Uniform('errors', 0, 100, size = 7)
errors2 = [errors1[1], errors1[3], errors1[6]] # doesn't have an attribute name
taus1 = 1/(errors1 ** 2)
taus2 = [taus1[1], taus1[3], taus1[6]]
first_dist = pm.Normal('first_dist', mu = v1, tau = taus1, value = first_res, observed = True)
second_dist= pm.Normal('second_dist', mu = v2, tau = taus2, value = second_res, observed = True)
model=pm.Model([first_dist, second_dist, errors1, taus1, v1, v2])
mcmc=pm.MCMC(model)
mcmc.sample(20000,10000)
mcplot(mcmc.trace("errors"))
plt.figure()
model2=pm.Model([second_dist, errors2, taus2, v2]) # since errors2 doesn't have an attribute name, I get an error
mcmc2=pm.MCMC(model2)
mcmc2.sample(20000,10000)
mcplot(mcmc2.trace('second_dist'))
【问题讨论】: