python numpy逆_创建numpy矩阵的逆矩阵和对角矩阵

我建议改变所有这些进口:from numpy import mat

from numpy import *

from numpy import matrix

from numpy import linalg

只有一个:

^{pr2}$

那你就可以了d = np.array(...)

# d = np.arange(15).reshape(3,5)

M = np.matrix(d)

M.I # a matrix has an I property, but an array does not

d.diagonal() # diagonal is a method, not a property

np.diagonal(d) # diagonal is also a function

np.linalg.inv(d)不起作用-它给出一个错误,目标是数组不是正方形。所以很明显{}返回的是另一种逆。请参阅我下面关于pinv的说明。在

numpy(通常是Python)有函数、方法和属性(属性)。区别清楚吗?在

许多numpy函数最终调用主数组对象的相应方法。通常这并不重要,只是为了方便通话。在

np.matrix是一个子类,它有许多自己的方法。例如,请注意In [817]: M.diagonal()

Out[817]: matrix([[ 0, 6, 12]])

In [818]: d.diagonal()

Out[818]: array([ 0, 6, 12])

diagonal返回了相同的数字,但对于M,它返回的是同一类的对象,根据类定义,该对象是2d

d.T,M.I访问properties。它们不需要方法所需的(),但在许多方面它们是相同的。np.matrix定义了I,但是{}没有。在

如果您习惯于在MATLAB中使用矩阵,np.matrix类可以简化转换。但是如果这是您第一次使用这样的数组,我建议您使用np.array。np.matrix类只会增加混乱。在

M.I与{}相同。在

它的代码是(使用help(M.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))

所以这意味着M.I使用pinv,而不是{}。np.linalg.pinv(d)工作正常。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值