python - 使用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 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.]
推荐阅读
- ios - 如何使控制器仅保持一个方向?
- css - 如何在 Javascript 中使用 Bootstrap-Select “核心选项”?
- c++ - 纹理单元重叠?渲染了错误的纹理
- python-3.x - Google Cloud Functions - 为什么 GCF 将两个位置参数传递给我的函数?
- python - 使用 pybind11 共享 MPI 通信器
- javascript - Node/Express - POST 提交,结束响应,没有页面渲染/重定向
- java - 在 Spring 中将所有属性文件内容迁移到 nosql db
- git - 在 git commit 中排除大块内的一行
- android - #android webview点击拳头后不显示内容
- r - Count the number of columns in a row with a specific value