[英]Propagation of uncertainties with Astropy
在之前的astropy版本中,可以通过以下方式处理不确定性的传播:
from astropy.nddata import NDData, StdDevUncertainty
x = NDData( 16.0, uncertainty=StdDevUncertainty( 4.0 ))
y = NDData( 361.0, uncertainty=StdDevUncertainty( 19.0 ))
print x.add(y)
对NDData的更改似乎已删除此功能。 我得到“AttributeError:'NDData'对象没有属性'add'”,我在文档中找不到任何有用的建议。 现在如何处理错误传播?
看起来这个功能已经转移到了mixin,NDArithmeticMixin。
算术mixin文档中的示例建议创建一个自己的类并使用它。
所以你的例子将成为:
from astropy.nddata import NDData, StdDevUncertainty, NDArithmeticMixin
class MyData(NDData, NDArithmeticMixin):
pass
x = MyData( 16.0, uncertainty=StdDevUncertainty( 4.0 ))
y = MyData( 361.0, uncertainty=StdDevUncertainty( 19.0 ))
z = x.add(y)
print(z)
print(z.uncertainty.array)
这使:
MyData(377.0)
19.416487838947599
更新
类NDDataArray
实际上执行上面的类MyData
所做的事情:它包括三个mixins(算术,io和切片)。
这使上面的内容更简单:
from astropy.nddata import StdDevUncertainty, NDDataArray
x = NDDataArray(16, uncertainty=StdDevUncertainty(4.0))
y = NDDataArray(361, uncertainty=StdDevUncertainty(19.0))
z = x.add(y)
print(z)
print(z.uncertainty.array)
我认为这个界面相当笨重。 也许它随着时间的推移而变得清晰,变得如此简单
z = x + y
print(z)
377.0 +/- 19.416487838947599
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.