假设我有一个涉及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
被错误地计算为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.]