numpy 矩阵

矩阵是numpy.matrix类的对象
该类继承自numpy.ndarray,所以任何针对多维数组的操作,对矩阵同样有效
但是作为子类矩阵又结合其自身的特点,做了必要的扩充,
比如:乘法计算(行*列)、求逆等。

矩阵的创建

#方法1
numpy.matrix(ary,copy=True)
#参数:
#ary:任何可被解释为矩阵的二维容器(经常为二维数组)
#copy:是否复制数据(缺省值为True时复制数据,与原容器相互独立)

#方法2
numpy.mat(任何可被解释为矩阵的二维容器)
#等价于numpy.matrix中copy=False,与原容器共享数据,不拥有独立的书拷贝(改一个另一个也改了)

#方法3
#该函数可以接受字符串形式的矩阵描述
#数据项通过空格分隔,数据行通过分号分隔,如:'1 2 3; 4 5 6'
numpy.mat(拼块规则)
示例
import numpy as np

ary = np.arange(1,9).reshape(2,4)
print(ary,type(ary))
#matrix复制出独立数据空间
m1 = np.matrix(ary)
print(m1,type(m1))	#type为numpy.matrix
#mat 共享数据空间
m2 = np.mat(ary)
print(m2,type(m2))
#字符串拼块规则
print(np.mat('1 2 3; 4 5 6'))	#输出[[1 2 3] [4 5 6]]

矩阵的乘法运算

矩阵的乘法:矩阵A的每一行上的元素与对应的矩阵B的列上的元素依次相乘再相加(点积),所以矩阵A的行数要与矩阵B的列数一样,得到的新矩阵的shape为:(矩阵A的行数,矩阵B的列数)

numpy提供了方法让多维数组使用矩阵的运算
a = np.array([
	[1,2,6],
	[3,5,7],
	[4,8,9]
	])
#点乘法求ndarray的点乘结果,与矩阵的乘法运算结果相同
k = a.dot(a)
#linalg模块中的	inv方法求a的逆矩阵
l = np.linalg.inv(a)	

矩阵的逆矩阵

若两个矩阵A,B满足:AB = BA = E(E为单位矩阵,其他矩阵与单位矩阵相乘还是自身,相当于和1相乘),则称A,B为逆矩阵

#创建矩阵
e = np.mat('1 2 6;3 5 7;4 8 9')
print(e.I)	#获得逆矩阵(不是所有矩阵都有逆矩阵)
print(e * e.I)	#E单位矩阵

矩阵的应用

求斐波那契数列
f = np.mat('1 1; 1 0')
for i in range(1,20):
	print(f ** i, '<-',i)	#求得的矩阵都是符合斐波那契数列的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值