矩阵运算
在矩阵运算中,*被重写用于矩阵乘法,.dot()则用于计算矩阵点乘。
mat3=np.mat([[5,6],[7,8]])
print('mat1\n', mat1)
print('mat3\n', mat3)
matrix4 = mat1 * mat3
print('矩阵乘法结果\n',matrix4)
matrix5 = mat1.dot(mat3)
print('矩阵点乘结果\n',matrix5)
mat1
[[1 2]
[3 4]]
mat3
[[5 6]
[7 8]]
矩阵乘法结果
[[19 22]
[43 50]]
矩阵点乘结果
[[19 22]
[43 50]]
矩阵常用函数
矩阵也可以使用.T进行转置。linalg.inv()可以用于求逆矩阵,但若不存在逆矩阵则报错。
matrix6 = matrix.T
matrix7 = np.linalg.inv(mat1)
print('\n矩阵转置后:\n',matrix6,
'\n矩阵求逆后:\n',matrix7)
矩阵转置后:
[[ 1 6 11]
[ 2 7 12]
[ 3 8 17]]
矩阵求逆后:
[[-2. 1. ]
[ 1.5 -0.5]]
矩阵特征值
使用numpy必须是方阵
matrix8 = np.linalg.eig(matrix)
matrix8
(array([24.88734753, -0.8418908 , 0.95454327]),
matrix([[-0.1481723 , -0.87920199, 0.10036602],
[-0.4447565 , 0.3814255 , -0.82855015],
[-0.88331004, 0.28551435, 0.550846 ]]))
类型转换
矩阵数据类型转换。由于结构类似,矩阵常常与列表和数组进行数据类型的转换。
print("矩阵列表:\n",matrix.tolist(),
"\n矩阵转数组:\n",np.array(matrix))
矩阵列表:
[[1, 2, 3], [6, 7, 8], [11, 12, 17]]
矩阵转数组:
[[ 1 2 3]
[ 6 7 8]
[11 12 17]]