gpt4 book ai didi

python - Scipy inv(A) vs A.I

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:55 25 4
gpt4 key购买 nike

我是 Python 的新手,我想知道它们之间的区别是什么

inv(A)

A.I

两者都返回包含矩阵 A 的逆矩阵的 Numpy 数组。

A.I 在我看来它正在从存储矩阵逆矩阵的矩阵类中访问一个变量;但是,这意味着每次更改 A 时,都必须重新计算 A 的倒数(这对我来说似乎不合逻辑)。

最佳答案

A.Inumpy.linalg.inv 不一样。

A.I 是一个 property这叫matrix.getI :

def getI(self):
M,N = self.shape
if M == N:
from numpy.dual import inv as func
else:
from numpy.dual import pinv as func
return asmatrix(func(self))

所以getI要么调用numpy.dual.inv (方阵的乘法逆矩阵)或 numpy.dual.pinv (Moore-Penrose 伪逆)取决于矩阵的形状。

如果您跟踪定义(在 dual.py 中),您会发现numpy.dual.invnumpy.linalg.invnumpy.dual.pinvnumpy.linalg.pinv >.

In [69]: s = np.random.random((3,4))

In [70]: t = np.matrix(s)

In [71]: t.I
Out[71]:
matrix([[ 1.09509751, -0.56685735, 0.51704085],
[-1.59777153, 0.2777383 , 1.25579378],
[ 0.81899054, 0.7594223 , -0.82760378],
[ 0.02845906, 0.50418885, -0.2091376 ]])

In [72]: np.linalg.inv(t)
...
LinAlgError: Array must be square

此外,np.linalg.inv 可以应用于 numpy 数组(并返回一个 numpy 数组),也可以应用于 numpy 矩阵。 matrix.I 属性特定于 numpy 矩阵,并返回另一个 numpy 矩阵。

In [60]: x = np.random.random((3,3))

In [62]: y = np.matrix(x)

In [64]: type(y.I)
Out[64]: <class 'numpy.matrixlib.defmatrix.matrix'>

In [65]: type(np.linalg.inv(x))
Out[65]: <type 'numpy.ndarray'>

一个属性,如 A.I 在语法上看起来像一个属性,但它实际上调用一个函数(在本例中为 A.getI)。所以倒数的值没有被存储。每次 Python 计算 A.I 时,都会调用函数 A.getI(),并返回函数的结果。

参见 Properties: attributes managed by get/set methods有关属性的更多信息。

关于python - Scipy inv(A) vs A.I,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com