问题遇到的现象和发生背景
我使用decimal运算,保留50位小数,存储到一个二位数组,然后将二位数组传入得np.linalg.inv()函数中进行矩阵求逆,出现了
No loop matching the specified signature and casting was found for ufunc inv错误,有什么好得解决方式
运行结果及报错内容
这是生成得数组:
[[Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('0')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17'), Decimal('1.5533333333333336782426196502153272777422355893436E-13')], [Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('1.5533333333333336782426196502153272777422355893436E-13'), Decimal('-4.8862271584128455294289331030555893791746173867389E-17')]]
错误信息:
Traceback (most recent call last):
File "D:\project\pacong\chen.py", line 225, in <module>
mainExe()
File "D:\project\pacong\chen.py", line 123, in mainExe
AccZZ = inv(AccZF)
File "<__array_function__ internals>", line 5, in inv
File "D:\tools1\Anaconda3\lib\site-packages\numpy\linalg\linalg.py", line 545, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
TypeError: No loop matching the specified signature and casting was found for ufunc inv
我的解答思路和尝试过的方法
我试过将值转换成string,尝试其他类型,但是其他类型无法存储50位小数