1.计算两向量间的点积
import numpy as np
# 构建向量
a=np.array([-2,2])
b=np.array([2,2])
# 计算点积
ab_1=np.inner(a,b) # =a1*b1+a2*b2
# 根据夹角余弦计算点积 (近似为0)
ab_2=np.linalg.norm(a)*np.linalg.norm(b)*np.cos(np.pi/2)
print(ab_1,ab_2)
# results
0 4.898587196589414e-16
2.计算两向量间的叉积
import numpy as np
# 构建向量
a=np.array([1,2,1])
b=np.array([1,-1,1])
# 计算叉积
a_b=np.cross(a,b)
print(a_b)
[ 3 0 -3]
3.计算行列式
import numpy as np
# 定义两个矩阵
a=np.mat('1 2;3 4')
b=np.mat('2 2 0;1 0 1;0 1 1')
# 计算两个行列式
det_a=np.linalg.det(a)
det_b=np.linalg.det(b)
print('a={0}\n D(a)={1}'.format(a,np.round(det_a)))
print('b={0}\n D(b)={1}'.format(b,np.round(det_b)))
a=[[1 2]
[3 4]]
D(a)=-2.0
b=[[2 2 0]
[1 0 1]
[0 1 1]]
D(b)=-4.0
4.矩阵访问和运算
<1>矩阵声明
import numpy as np
a1=np.random.random((4,3))
a2=np.random.randint(1,11,(4,3))
a3=np.ones((4,3))
a4=np.zeros((4,3))
a5=np.mat(np.arange(2,25,2)).reshape(4,3)
a6=np.mat('1 2 3;4 5 6;7 8 9;10 11 12')
print('a1=\n{}'.format(a1))
print('a2=\n{}'.format(a2))
print('a3=\n{}'.format(a3))
print('a4=\n{}'.format(a4))
print('a5=\n{}'.format(a5))
print('a6=\n{}'.format(a6))
a1=
[[0.86427132 0.11123374 0.28509846]
[0.79472244 0.20047733 0.7522389 ]
[0.01712534 0.25075339 0.46870283]
[0.75457102 0.15000278 0.13519241]]
a2=
[[10 4 1]
[ 4 9 4]
[ 4 8 10]
[ 2 2 9]]
a3=
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
a4=
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
a5=
[[ 2 4 6]
[ 8 10 12]
[14 16 18]
[20 22 24]]
a6=
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
<2>矩阵访问
import numpy as np
a=np.mat('1 2 3;4 5 6;7 8 9;10 11 12')
print('a=\n{}'.format(a))
# 获取矩阵的行列数
m,n=np.shape(a)
print('a is a %d x %d matrix'%(m,n))
a_11,a_32=a[0,0],a[2,1]
print('a11=%d,a32=%d'%(a_11,a_32))
a_r2=a[1]
print('the second row in a is{}'.format(a_r2))
a_c2=a[:,1]
print('the second column in a is \n{}'.format(a_c2))
a=
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
a is a 4 x 3 matrix
a11=1,a32=8
the second row in a is[[4 5 6]]
the second column in a is
[[ 2]
[ 5]
[ 8]
[11]]
<3>矩阵运算
import numpy as np
a=np.mat('1 2 3;4 5 6;7 8 9;10 11 12')
b=np.ones((4,3))
print('a=\n{}\n b=\n{}'.format(a,b))
# 矩阵加减
d1=np.add(a,b)
d2=np.subtract(a,b)
print('a+b=\n{}'.format(d1))
print('a-n=\n{}'.format(d2))
# 矩阵数乘
d3=np.multiply(a,2)
print('2a=\n{}'.format(d3))
# 矩阵乘法
c=np.ones((3,4))
d4=np.dot(b,c)
print('b*c=\n{}'.format(d4))
# 矩阵转置
d5=np.transpose(a)
print('a^T=\n{}'.format(d5))
a=
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
b=
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
a+b=
[[ 2. 3. 4.]
[ 5. 6. 7.]
[ 8. 9. 10.]
[11. 12. 13.]]
a-n=
[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]
[ 9. 10. 11.]]
2a=
[[ 2 4 6]
[ 8 10 12]
[14 16 18]
[20 22 24]]
b*c=
[[3. 3. 3. 3.]
[3. 3. 3. 3.]
[3. 3. 3. 3.]
[3. 3. 3. 3.]]
a^T=
[[ 1 4 7 10]
[ 2 5 8 11]
[ 3 6 9 12]]
5.矩阵求逆
b=np.linalg.inv(a)
import numpy as np
E=np.eye(4,4)
print('E=\n{}'.format(E))
a=np.mat('1 2;3 4')
# a的逆矩阵
b=np.linalg.inv(a)
print('a=\n{}'.format(a),'\n the inverse of a is \n{}'.format(b))
# 矩阵a和它的逆矩阵b相乘
c=np.around(np.dot(a,b),decimals=1) #decimals用来决定精度
print('a*a^-1 = \n{}'.format(c))
E=
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
a=
[[1 2]
[3 4]]
the inverse of a is
[[-2. 1. ]
[ 1.5 -0.5]]
a*a^-1 =
[[1. 0.]
[0. 1.]]
6.求矩阵的秩
r=np.linalg.matrix_rank(A)
7.求距离
import numpy as np
x1=[1,3]
x2=[4,9]
np_x1=np.array(x1)
np_x2=np.array(x2)
# 欧几里得距离 6.708203932499369
d1=np.linalg.norm(np_x1-np_x2)
print(d1)
# 曼哈顿距离 9
d2=np.sum(np.abs(np_x1-np_x2))
print(d2)
# 切比雪夫距离 6
d3=np.max(np.abs(np_x1-np_x2))
print(d3)
8.求导
import numpy as np
import sympy as sp
# 定义变量x,表示对x求导
x=sp.symbols('x',real=True)
# y=arctan x
y=sp.atan(x)
d1=sp.diff(y,x)
print('(arctanx)\'={}'.format(d1))
# (arctanx)'=1/(x**2 + 1)
# y=ln sec x
y=sp.ln(sp.sec(x))
d2=sp.diff(y,x)
print('(ln secx)\'={}'.format(d2))
# (ln secx)'=tan(x)
注:python中print %用法
print('D %d= %s' % (n,D))
,表示将n代入到%d位置,将D字符化后代入到%s位置。
9.积分
import numpy as np
import sympy as sp
x=sp.symbols('x')
# 不定积分
fx1=x**2
fx2=sp.cos(x)
fx3=1/(1+x**2)
r1=sp.integrate(fx1,(x))
r2=sp.integrate(fx2,(x))
r3=sp.integrate(fx3,(x))
print(r1) # x**3/3
print(r2) # sin(x)
print(r3) # atan(x)
# 定积分
fx=sp.sqrt(4-x**2)/2
r=sp.integrate(fx,(x,-2,2)) #积分范围为-2~2
print(r) # pi