线性代数
'''
Numpy 定义了 matrix 类型,使用该 matrix 类型创建的是矩阵对象,它们的加减乘除运算缺省采
用矩阵方式计算,因此用法和Matlab十分类似。但是由于 NumPy 中同时存在 ndarray 和 matrix
对象,因此用户很容易将两者弄混。这有违 Python 的“显式优于隐式”的原则,因此官方并不推荐
在程序中使用 matrix 。在这里,我们仍然用 ndarray 来介绍。
'''
一、矩阵和向量积
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([2,3,4,5,6])
z=np.dot(x,y)
print(z)
x=np.array([[1,2,3],[3,4,5],[6,7,8]])
print(x)
70
[[1 2 3]
[3 4 5]
[6 7 8]]
y=np.array([[5,4,2],[1,7,9],[0,4,5]])
print(y)
[[5 4 2]
[1 7 9]
[0 4 5]]
z=np.dot(x,y)
print(z)
[[ 7 30 35]
[ 19 60 67]
[ 37 105 115]]
二、矩阵特征值与特征向量
x = np.diag((1, 2, 3))
print(x)
[[1 0 0]
[0 2 0]
[0 0 3]]
print(np.linalg.eigvals(x))
[1. 2. 3.]
a,b=np.linalg.eig(x)
print(a)
print(b)
[1. 2. 3.]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
for i in range(3):
if np.allclose(a[i]*b[:,i],np.dot(x,b[:,i])):
print('Right')
else:
print('Error')
Right
Right
Right
A=np.arange(16).reshape(4,4)
print(A)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
A.T
array([[ 0, 4, 8, 12],
[ 1, 5, 9, 13],
[ 2, 6, 10, 14],
[ 3, 7, 11, 15]])
A=A+A.T
print(A)
[[ 0 5 10 15]
[ 5 10 15 20]
[10 15 20 25]
[15 20 25 30]]
B=np.linalg.eigvals(A)
print(B)
[ 6.74165739e+01 -7.41657387e+00 1.82694656e-15 -1.72637110e-15]