首页 > 解决方案 > 使用decimal.Decimal从表达式输出多值?

问题描述

假设我有一个涉及模块的表达式decimal,我想在其中输入多个值并取出多个值。

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
x=Decimal(A+B)

这会引发错误,因为Decimal它与numpy数组不兼容。

如何通过Decimal表达式传递多个值并获取多个值,以便我可以轻松地将输出转换为浮点数,然后将它们放入numpy数组中?

我想要这个的原因是某个计算涉及A+B被错误地计算为 afloat但是一旦Decimal(A+B)计算,结果输出可以转换为 afloat并且不会在计算中造成进一步的困难。

编辑:我一直在开发一种“作弊”方法,但我不知道它是否有腿:

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
for i in range (0,2):
    x=Decimal(A[i]+B[i])
    print(x)

这里的关键是缩进print(x),这个打印出来5 7 9。如果无法真正解决上述问题,有没有办法转换5 7 9np.array([5,7,9]). (也许通过导出为 csv 文件并再次导入 Python?)

标签: pythonnumpypython-decimal

解决方案


我认为您可以像这样手动执行此操作:

r = np.array(tuple(Decimal(x+y) for x, y in zip(A, B)), np.float64)
print(r)

输出:

[5. 7. 9.]

推荐阅读