看起来这个功能已经被移到了一个 mixin 中,NDArithmeticMixin。
Arithmetic 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
所做的事情:它包括三个 mixin(算术、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