我有几个像这样的矩阵:
[[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,但我仍然想要一种方法来完成这个使用十进制类型的精度。
答案 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位浮点)