持续更新 numpy的矩阵操作

在使用numpy的时候,因为numpy 的广播机制,所以很多计算都是可以算的,不会报错,这个实际上给我们使用numpy带来了隐患,因为我们不知道根本没有意识到自己是不是算错了,根本没有办法知道输出了什么xx玩意儿,… 所以用numpy敲代码,一定要规范。

##############向量  np.array:

name                        pthon函数或者简略符号
数乘       					*
(点乘 内积  数量基)         @  np.dot(x,y)       (只是np.array 的时候,才可以用 @  重载运算符 得到 实现np.dot)  手写: (中间的一个小点)
(差乘 向量积 矢量基 外积)       np.cross(x,y)    手写:X
(Outer product ) 			  np.outer        手写的:⊗      (这个不是外积,不要搞混!)
(Kronecker product  )        np.kron()

array 更加常用一点

##############矩阵 np.matrix:
name           pthon函数或者简略符号
(数乘)  			*
(相乘)  			@    np.dot    			(书上的矩阵相乘 是没有符号的)   
(转置):  		a.T


############尤其对于方阵:
求逆矩阵 ( inverse matrix )
from numpy.linalg import inv as inv
a_inv = inv(a)

求特征值和特征向量:
eigenvalue,featurevector=np.linalg.eig(matrix)

ps:featurevector 会得到一个矩阵、其中的列向量按照特征值的顺序排列。但是里面的数字非常复杂、得到的没有什么实际意义。
############尤其对于实对称矩阵,实对称矩阵一定可以对角相似于对角上的元素为其特征值的对角矩阵。此时featurevector为正交阵。比如看下面例子:
A=np.array([[1,1,-2],
           [1,-2,1],
           [-2,1,1]])
eigenvalue,featurevector=np.linalg.eig(A)
#得到:
np.round(eigenvalue)=array([ 3.,  0., -3.])
_A=np.round(inv(featurevector)@A@(featurevector))
#得到:
_A=array([[ 3.,  0.,  0.],
       [-0.,  0., -0.],
       [-0.,  0., -3.]])

############其他:
1.逆矩阵和矩阵相乘得到单位矩阵E
inv(a) @ a
array([[ 1.00000000e+00,  1.11022302e-16],
       [-1.11022302e-16,  1.00000000e+00]])
       
np.round(inv(a) @ a) #四舍五入
array([[ 1.,  0.],
       [-0.,  1.]])



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值