矩阵运算

在矩阵运算中,*被重写用于矩阵乘法,.dot()则用于计算矩阵点乘。

  1. mat3=np.mat([[5,6],[7,8]])
  2. print('mat1\n', mat1)
  3. print('mat3\n', mat3)
  4. matrix4 = mat1 * mat3
  5. print('矩阵乘法结果\n',matrix4)
  6. matrix5 = mat1.dot(mat3)
  7. print('矩阵点乘结果\n',matrix5)
  1. mat1
  2. [[1 2]
  3. [3 4]]
  4. mat3
  5. [[5 6]
  6. [7 8]]
  7. 矩阵乘法结果
  8. [[19 22]
  9. [43 50]]
  10. 矩阵点乘结果
  11. [[19 22]
  12. [43 50]]

矩阵常用函数

矩阵也可以使用.T进行转置。linalg.inv()可以用于求逆矩阵,但若不存在逆矩阵则报错。

  1. matrix6 = matrix.T
  2. matrix7 = np.linalg.inv(mat1)
  3. print('\n矩阵转置后:\n',matrix6,
  4. '\n矩阵求逆后:\n',matrix7)
  1. 矩阵转置后:
  2. [[ 1 6 11]
  3. [ 2 7 12]
  4. [ 3 8 17]]
  5. 矩阵求逆后:
  6. [[-2. 1. ]
  7. [ 1.5 -0.5]]

矩阵特征值

使用numpy必须是方阵

  1. matrix8 = np.linalg.eig(matrix)
  2. matrix8
  1. (array([24.88734753, -0.8418908 , 0.95454327]),
  2. matrix([[-0.1481723 , -0.87920199, 0.10036602],
  3. [-0.4447565 , 0.3814255 , -0.82855015],
  4. [-0.88331004, 0.28551435, 0.550846 ]]))

类型转换

矩阵数据类型转换。由于结构类似,矩阵常常与列表和数组进行数据类型的转换。

  1. print("矩阵列表:\n",matrix.tolist(),
  2. "\n矩阵转数组:\n",np.array(matrix))
  1. 矩阵列表:
  2. [[1, 2, 3], [6, 7, 8], [11, 12, 17]]
  3. 矩阵转数组:
  4. [[ 1 2 3]
  5. [ 6 7 8]
  6. [11 12 17]]