【发布时间】:2021-09-18 23:12:24
【问题描述】:
我正在尝试使用 numpy 对表示为 numpy 数组的矩阵执行操作。
我将分数作为这些矩阵中的元素。
似乎一切正常,直到我尝试找到逆向。
这给出了一个错误。
这是 numpy 中的错误吗?
我的意思是,如果 numpy 允许我们将这样的分数填充矩阵相乘,那么它应该也可以让我们找到逆矩阵,对吧?
import numpy as np
from fractions import Fraction as F
c = np.array([[F(2),F(-1), F(-1)],[F(3),F(4), F(-2)],[F(3),F(-2), F(4)]])
c @ c
np.dot(c, c)
np.linalg.inv(c)
错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-45-5ed58b2836e1> in <module>
----> 1 np.linalg.inv(c)
<__array_function__ internals> in inv(*args, **kwargs)
C:\Programs\Anaconda3\lib\site-packages\numpy\linalg\linalg.py in inv(a)
544 signature = 'D->D' if isComplexType(t) else 'd->d'
545 extobj = get_linalg_error_extobj(_raise_linalgerror_singular)
--> 546 ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
547 return wrap(ainv.astype(result_t, copy=False))
548
TypeError: No loop matching the specified signature and casting was found for ufunc inv
我的 numpy 版本是
1.19.2
【问题讨论】:
-
inv需要floatdtype 数组,而不是objectdtype。dot和@已推广到与objectdtype 一起使用,前提是对象具有必要的 * 和 + 操作。但是inv还没有被推广。还要注意dot与 object dtype 很慢。
标签: python numpy linear-algebra matrix-inverse