使用十进制从表达式输出多个值.小数



假设我有一个涉及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)

这会引发一个错误,因为Decimalnumpy阵列不兼容。

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

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

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

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 9转换为np.array([5,7,9])。(也许可以导出为csv文件并再次导入Python?(

我认为你可以手动这样做:

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

输出:

[5. 7. 9.]

相关内容

  • 没有找到相关文章

最新更新