python中数组矩阵的运算、切片及相互转换
程序员文章站
2022-03-09 16:18:56
...
一、数组的运算
import numpy as np
#创建数组
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
a=[[1,2,3]
[4,5,6]
[7,8,9]]
b=np.array([[9,8,7],[6,5,4],[3,2,1]])
b=[[9,8,7]
[6,5,4]
[3,2,1]]
#a+b对应位置相加
c=a+b
c=[[10 10 10]
[10 10 10]
[10 10 10]]
#a*const数组每个元素乘以该常数
c=a*3
c=[[ 3 6 9]
[12 15 18]
[21 24 27]]
#a*b数组中每个对应元素相乘
c=a*b
c=[[ 9 16 21]
[24 25 24]
[21 16 9]]
#数组的点乘相当于矩阵相乘
c=a*b
c=[[ 30 24 18]
[ 84 69 54]
[138 114 90]]
#改变矩阵的格式
c=a.reshape(1,9)
c=[[1 2 3 4 5 6 7 8 9]]
二、矩阵的运算
#数组转化为矩阵
a=np.mat(a)
b=np.mat(b)
#矩阵的乘法* 、np.dot()结果一致,按矩阵运算规则
#也可以reshape
#矩阵的转置
c=a.T
c=[[1 4 7]
[2 5 8]
[3 6 9]]
#矩阵的共轭转置
c=a.H
c=[[1 4 7]
[2 5 8]
[3 6 9]]
#矩阵的逆
c=a.I
c=[[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]
[-6.30503948e+15 1.26100790e+16 -6.30503948e+15]
[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]
c=np.linalg.inv(a)
c=[[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]
[-6.30503948e+15 1.26100790e+16 -6.30503948e+15]
[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]
三、相互转化
#数组转矩阵
array_to_matrix = np.mat(my_array)
#矩阵转数组
matrix_to_array = np.array(my_matrix)
四、切片
#a为三维举证
a=[[[9, 8, 7], [6, 5, 4], [3, 2, 1]], [[19, 18, 17], [16, 15, 14], [13, 12, 11]], [[29, 28, 27], [26, 25, 24], [23, 22, 21]]]
a[1,:]=[[19 18 17]
[16 15 14]
[13 12 11]]
a[1,1,:]=[16 15 14]
a[1,1,1]=15
a[:1:]=[[[9 8 7]
[6 5 4]
[3 2 1]]]
a[:,1:]=[[[ 6 5 4]
[ 3 2 1]]
[[16 15 14]
[13 12 11]]
[[26 25 24]
[23 22 21]]]
a[:,1,1]=[ 5 15 25]
a[0:2,0:2,:]=[[[ 9 8 7]
[ 6 5 4]]
[[19 18 17]
[16 15 14]]]
上一篇: 工厂方法模式
下一篇: Java编程,if、else if 练习