矩阵逆与十进制类型NumPy

时间:2015-09-20 23:12:23

标签: python python-3.x numpy matrix-inverse

我有几个像这样的矩阵:

[[Decimal('1') Decimal('1') Decimal('1') Decimal('1')][Decimal('56.44000000000000000') Decimal('57.32000000000000000') Decimal('57.04000000000000000') Decimal('56.48000000000000000')]

是的,那是十进制。十进制类型。

然后我希望它反过来:

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] ...

如您所见,这些值已转换为浮点值。我理解Decimal is not supported out of the box,但我仍然想要一种方法来完成这个使用十进制类型的精度。

1 个答案:

答案 0 :(得分:1)

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

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

<?xml version="1.0"?>
<thesaurus>
    <word name="let">
        <synonyms>allow</synonyms>
    </word>
</thesaurus>

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