使用 numpy 的矩阵的逆

我想用 numpy 来计算反数,但是我得到了一个错误:

'numpy.ndarry' object has no attribute I

要计算一个矩阵的逆矩阵,比如说矩阵 M,它应该很简单: print M.I

密码是这样的:

x = numpy.empty((3,3), dtype=int)
for comb in combinations_with_replacement(range(10), 9):
x.flat[:] = comb
print x.I

我假设,出现这个错误是因为 x 现在是平的,因此‘ I’命令不兼容。有什么办法吗?

我的目标是打印每个可能的数值矩阵组合的逆矩阵。

287245 次浏览

请进呢?

例如: My _ verse _ array = inv (my _ array)

I属性只存在于 matrix对象上,而不存在于 ndarray对象上。您可以使用 numpy.linalg.inv来反转数组:

inverse = numpy.linalg.inv(x)

注意你生成矩阵的方式,并不是所有的矩阵都是可逆的。您要么需要改变生成矩阵的方式,要么跳过那些不可逆的矩阵。

try:
inverse = numpy.linalg.inv(x)
except numpy.linalg.LinAlgError:
# Not invertible. Skip this one.
pass
else:
# continue with what you were doing

另外,如果您想遍历所有从[0,10)中抽取元素的3x3矩阵,您需要以下内容:

for comb in itertools.product(range(10), repeat=9):

而不是 combinations_with_replacement,否则您将跳过

numpy.array([[0, 1, 0],
[0, 0, 0],
[0, 0, 0]])

使用 python 和 numpy 逆矩阵:

>>> import numpy as np
>>> b = np.array([[2,3],[4,5]])
>>> np.linalg.inv(b)
array([[-2.5,  1.5],
[ 2. , -1. ]])

不是所有的矩阵都可以反转,例如 奇异矩阵不可逆:

>>> import numpy as np
>>> b = np.array([[2,3],[4,6]])
>>> np.linalg.inv(b)


LinAlgError: Singular matrix

奇异矩阵问题的解:

Try-catch Singular Matrix 异常,并继续下去,直到找到一个满足先前条件的转换,AND 也是可逆的。

另一种方法是使用 简单的 matrix(而不是 numpy 数组)和 I属性。例如:

>>> m = np.matrix([[2,3],[4,5]])
>>> m.I
matrix([[-2.5,  1.5],
[ 2. , -1. ]])

IDK 如果有人已经提到了这一点,但我想指出的矩阵 _ 对象。Inp.linalg.inv(matrix_object)没有给出一个真正的倒数。这让我很伤心。对于矩阵对象 mnp.dot(m, m.I) = an identity matrix,但是 np.dot(m.I, m) =/= Inp.linalg.inv(I)也是如此。

小心点。