Numpy常见方法(6)-用numpy模块求矩阵转置,逆,维度,协方差矩阵,矩阵的点乘,对角和,矩阵行列式和方阵的特征值特征向量

用numpy模块求矩阵的相关问题

矩阵是机器学习中常见类型,熟练掌握矩阵在python中的实现至关重要



一、矩阵的行列数

求矩阵的行列数,用shape方法,返回tuple类型,0位代表行数,1位代表列数

import numpy as np

#设定一个2*4的矩阵
a = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,0]])
print(a)

#求矩阵的行列数,用shape方法,返回tuple类型,0位代表行数,1位代表列数
print(np.shape(a))

[[1 2 3 4]
 [3 4 5 6]
 [5 6 7 8]
 [7 8 9 0]]
(4, 4)

二、矩阵的转置

求矩阵的转置, 用.T , 返回array类型,但不改变原变量属性

print(a.T)
print(a)

[[1 3 5 7]
 [2 4 6 8]
 [3 5 7 9]
 [4 6 8 0]]
[[1 2 3 4]
 [3 4 5 6]
 [5 6 7 8]
 [7 8 9 0]]

三、矩阵的逆

求矩阵的逆,用np.linalg.inv(),返回array类型,但不改变原变量属性

print(np.linalg.inv(a))
print(a)

[[-5.25419957e+15  1.05083991e+16 -5.25419957e+15 -4.29687500e-01]
 [ 1.05083991e+16 -2.10167983e+16  1.05083991e+16  7.59375000e-01]
 [-5.25419957e+15  1.05083991e+16 -5.25419957e+15 -2.29687500e-01]
 [-5.83333333e-01  1.06666667e+00 -3.83333333e-01 -1.00000000e-01]]
[[1 2 3 4]
 [3 4 5 6]
 [5 6 7 8]
 [7 8 9 0]]

四、矩阵的点乘

求矩阵的点乘,用np.dot(<Variable1,Variable2>),返回array类型,但不改变原变量属性

print(np.dot(a,a.T))
print(a)

[[ 30  50  70  50]
 [ 50  86 122  98]
 [ 70 122 174 146]
 [ 50  98 146 194]]
[[1 2 3 4]
 [3 4 5 6]
 [5 6 7 8]
 [7 8 9 0]]

五、协方差矩阵

求协方差矩阵,用np.cov(<二维array类型>,< rowvar=true/false>),
若rowvar为true,每一行代表一个变量;若rowvar为false,每一列代表一个变量
返回array类型,但不改变原变量属性

print(np.cov(a,rowvar = False))
print(a)

[[ 6.66666667  6.66666667  6.66666667 -3.33333333]
 [ 6.66666667  6.66666667  6.66666667 -3.33333333]
 [ 6.66666667  6.66666667  6.66666667 -3.33333333]
 [-3.33333333 -3.33333333 -3.33333333 11.66666667]]
[[1 2 3 4]
 [3 4 5 6]
 [5 6 7 8]
 [7 8 9 0]]

六、矩阵对角元素和

求矩阵对角元素和,用np.trace(<二维array类型>),
返回int类型,但不改变原变量属性

print(np.trace(a))

12

七、矩阵行列式

求矩阵行列式,用np.linalg.det(<二维array类型>),
返回float类型,但不改变原变量属性

print(np.linalg.det(a))

-1.776356839400248e-14

八、“方阵”的特征值和特征向量

求“方阵”的特征值和特征向量,用np.linalg.det(<二维array类型方阵>),
返回float类型,但不改变原变量属性

import numpy as np
a = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,0]])
eig_value, eig_vector = np.linalg.eig(a)

i = 1
for va, vec in zip(eig_value, eig_vector):
    print(("a的第{}个特征值是 {},该特征值对应的特征向量是{}").format(i,va,vec))
    i +=1

结果如下

a的第1个特征值是 20.210472052039158,该特征值对应的特征向量是[ 0.26376584  0.25204411 -0.75343025  0.40824829]
a的第2个特征值是 -7.409089365310404,该特征值对应的特征向量是[ 0.45358594  0.27091696 -0.05434769 -0.81649658]
a的第3个特征值是 -0.8013826867287482,该特征值对应的特征向量是[0.64340604 0.28978981 0.64473486 0.40824829]
a的第4个特征值是 4.469799535125549e-16,该特征值对应的特征向量是[ 5.57419085e-01 -8.82666205e-01 -1.17073249e-01  2.12838718e-16]

总结

矩阵的点乘,转置,逆,协方差矩阵,行列数,行列式,对角元素和以及求方阵的特征值和特征向量都离不开numpy模块,numpy在python中的应用可以大幅提高高维数据在python中的运算速度。如果我的分享对你有帮助,请点个赞鼓励一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Efred.D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值