gpt4 book ai didi

python - 用 Astropy 传播不确定性

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:16 25 4
gpt4 key购买 nike

在以前的 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。

example in the Arithmetic mixin documentation建议创建自己的类并使用它。

所以你的例子会变成:

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 做的事情:它包括三个混合(算术、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

关于python - 用 Astropy 传播不确定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34251169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com