Python模块,ufloat can';t解包变量

Python模块,ufloat can';t解包变量,python,numpy,uncertainty,Python,Numpy,Uncertainty,我正在使用Python2.7和名为“不确定性”的模块分析实验数据。我有两个数组,polycoefs和cov,它们是由numpy函数polyfit生成的。我已经设法从cov数组中取出了前导对角线,并试图将这些值与一个名为uncert_coefs的列表中的适当系数进行匹配,该列表带有不确定性函数“ufloat”。代码如下: polycoeffs,cov=polyfit(wav,trans,6,cov=True) #wav and trans are themselves, arrays. print

我正在使用Python2.7和名为“不确定性”的模块分析实验数据。我有两个数组,polycoefs和cov,它们是由numpy函数polyfit生成的。我已经设法从cov数组中取出了前导对角线,并试图将这些值与一个名为uncert_coefs的列表中的适当系数进行匹配,该列表带有不确定性函数“ufloat”。代码如下:

polycoeffs,cov=polyfit(wav,trans,6,cov=True) #wav and trans are themselves, arrays.
print  "Polycoeffs= ",polycoeffs

print "Cov= ",cov

cov_diag=[]
for element in diag(cov):
    cov_diag.append(str(element))
print "The diagonal of the covariant matrix= ",cov_diag
ord_counter=6
uncert_coeffs=[]
cov_index=0

for i in polycoeffs:
    uncert=(cov_diag[cov_index])
    print "uncert: ",uncert
    temp=ufloat("(i+/-uncert)") #error here
    uncert_coeffs.append(temp)
    cov_index+=1

print "The polynomial coefficients with uncertainties, are: ",uncert_coeffs 
这将产生以下错误:

ValueError: Cannot parse (i+/-uncert): was expecting a number like 1.23+/-0.1

因此,我的问题是:在这种情况下,手工组合polycoefs和它们的不确定性是一件非常痛苦的事情,我如何让ufloat解包变量uncert?此外,uncert的值主要是科学符号。

您传递的是文本字符串
“i+/-uncert”
,而不是变量值

假设您使用的是最新版本的不确定性,只需执行以下操作:

temp = ufloat(i, uncert)
或者,也可以将数值格式化为其字符串表示形式:

temp = ufloat('{}+/-{}'.format(i, uncert))

但是,没有理由不直接将值传递给
ufloat

似乎我使用了Debian repos的1.8版,并且我也按照建议错误地传递了参数。它在2.4版中运行良好。使用2.4模块,这现在在pythonidle中工作,但在从终端调用脚本时不起作用。我得到错误UserWarning:要么使用ufloat(诸如此类),要么使用ufloat(诸如此类)。我正是按照你的建议来称呼它的。@user2151741-这是一个警告,而不是一个错误。它应该仍然运行,它只是让您知道您正在做的事情在以后的版本中不受支持。根据您的代码,这可能是因为您正在将所有内容转换为字符串(例如,
cov\u diag.append(str(element))
)。尝试只传入实际的浮点值。我已将该行添加到cov_diag.append(元素)中,但仍然得到我在上一条注释中没有提到的错误:AttributeError:'numpy.float64'对象没有属性'strip'。我尝试使用不确定性函数wrap ie:poly_wrap=polyfit.wrap(),但这也会引发一个错误“function”对象没有属性“wrap”。您得到的是
AttributeError
,因为您试图对数值使用
strip
方法。您会混淆字符串和数字类型(例如浮点)。Python是一种“强类型”语言。换句话说,任何东西都有一个类型,您需要在类型之间显式转换。字符串有一个去除空白的
strip
方法。浮动没有(这没有任何意义),因此当您尝试剥离浮动时,会出现错误。