矩阵
矩阵是matrix类型的对象, 该类继承自numpy.ndarray. 任何针对ndarray的操作,对矩阵对象同样有效. 但是作为子类, 矩阵又结合了其自身的特点, 做了必要的扩充. 比如: 矩阵乘法 / 矩阵求逆等运算.
矩阵对象的创建
# 构建矩阵对象
# ary: 任何可以被解释为矩阵的数据结构
# copy: 是否复制数据 (True:复制一份副本数据)
m = np.matrix(ary, copy=True)
np.mat(ary)
np.mat('矩阵拼块规则字符串')
矩阵的乘法运算
m3 = np.mat('1 2 3; 4 5 6')
print(m3)
print(m3 * 10)
print(m3 * m3.T)
print(m3.T * m3)
矩阵的逆矩阵
若两个矩阵A / B满足: AB = BA = E (E为单位矩阵). 则称A与B互为逆矩阵.
单位矩阵E: 主对角线为1, 其他元素都为0.
矩阵求逆的API:
mi = m.I
mi = np.linalg.inv(m)
矩阵求逆时, 若把方阵推广到非方阵, 则称为矩阵的广义逆矩阵.
案例: 求斐波那契数列
1 1 2 3 5 8 13 21 …
x 1 1 1 1 1 1
1 0 1 0 1 0
----------------------------------
1 1 2 1 3 2 5 3
1 0 1 1 2 1 3 2 ...
m = np.mat('1 1; 1 0')
for i in range(1, 30):
print((m**i)[0,1], end=' ')
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946
17711 28657 46368 75025 121393 196418 317811 514229
如图,根据矩阵的乘法进行运算,右下角的数就会符合斐波那契数列的规则,是不是很神奇