首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >十进型NumPy矩阵逆

十进型NumPy矩阵逆
EN

Stack Overflow用户
提问于 2015-09-20 23:12:23
回答 1查看 1.9K关注 0票数 1

我有几个这样的矩阵:

代码语言:javascript
运行
复制
[[Decimal('1') Decimal('1') Decimal('1') Decimal('1')][Decimal('56.44000000000000000') Decimal('57.32000000000000000') Decimal('57.04000000000000000') Decimal('56.48000000000000000')]

是的,那是decimal.Decimal型的。

我想要它是相反的:

代码语言:javascript
运行
复制
from numpy.linalg.linalg import inv
invs = inv(mymatrix)
print(invs)

[[ -2.07973657e+15  -7.33173736e+13  -5.68628487e+13   6.80363276e+11
    4.51521775e+12   6.50136911e+11   1.12144399e+10  -1.44488244e+10
   -4.87281445e+10   5.24155356e+08] ...

如您所见,这些值被转换为浮动值。我理解十进制不支持开箱即用。,但我仍然想要用十进制类型来实现这一点,以提高精度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 23:45:38

不幸的是,没有办法使numpy及其逆操作与decimal.Decimal或cdecimal.Decimal一起工作。它将始终转换为float64,因为它不能使用Decimal执行该操作。Numpy不知道任何关于Decimal的信息,因为数组将它作为dtype对象保存。

如果要更改numpy数组的数据类型,可以调用如下所示:

代码语言:javascript
运行
复制
from cdecimal import Decimal
a=np.array([[Decimal('1'),Decimal('1')],[Decimal('1'),Decimal('2')]])
a
>>> array([[Decimal('1'), Decimal('1')],
   [Decimal('1'), Decimal('2')]], dtype=object)
a=a.astype(np.float128)
a
>>> array([[ 1.0,  1.0],
   [ 1.0,  2.0]], dtype=float128)

这将为您提供C编译器的长双,可能是扩展的精确格式(80位浮点数)的精度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32685280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档