一、矩阵创建
使用 np.mat、np.asmatrix 创建矩阵
使用 np.bmat 来组合矩阵 常用
import numpy as np
# 生成矩阵
# 可以使用np.mat np.asmatrix来创建矩阵
#np.mat = np.asmatrix 一样的
#np.mat 将特殊字符串转化为矩阵
# m1 = np.mat('1 2 3;4 5 6;7 8 9')
# print(m1)
# print(type(m1)) # <class 'numpy.matrixlib.defmatrix.matrix'>
# print(m1.ndim) # 2维 ---只能是2维
# print(m1.shape) # (3,3)
# print(m1.itemsize)
# print(m1.dtype)
# print(m1.size)
# print("********************")
# # 也可以将列表嵌套转化为矩阵
# m1 = np.asmatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print(m1)
# print(type(m1)) # <class 'numpy.matrixlib.defmatrix.matrix'>
#
#
# # 也可以将二维数组转化为矩阵
#
# # 创建一个二维数组
# arr = np.arange(9).reshape((3, 3))
#
# m1 = np.mat(arr)
#
# print(m1)
# print(type(m1)) # <class 'numpy.matrixlib.defmatrix.matrix'>
# 可以使用np.bmat来组合矩阵
arr1 = np.array([[1, 2], [1, 2]])
arr2 = np.arange(4).reshape((2, 2))
print('arr1:\n', arr1)
print('arr2:\n', arr2)
print('*' * 100)
# 利用np.bmat将数组组合成矩阵
# res = np.bmat('arr1 arr2;arr2 arr1')
# res = np.bmat([[arr1, arr2], [arr2, arr1]]) # 列表对象
# print(res)
# print(type(res)) # <class 'numpy.matrixlib.defmatrix.matrix'>
# 可以使用np.bmat 可以将 二维数组转化为矩阵
res = np.bmat(arr1)
# res = np.bmat('1 2 3;4 5 6;7 8 9') # 错误的
# res = np.bmat([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 错误的
print(res)
print(type(res)) # <class 'numpy.matrixlib.defmatrix.matrix'>
二、矩阵的运算
import numpy as np
# 创建矩阵进行运算
m1 = np.mat('1 2;3 4') # ---(2,2)
m2 = np.asmatrix([[2, 1], [1, 2]]) # ----(2,2)
print('m1:\n', m1)
print('m2:\n', m2)
print('*' * 100)
# 矩阵相加 ---同型矩阵 ---对应位置相加
print('m1 + m2 :\n', m1 + m2)
# 矩阵相减---矩阵加上后面的矩阵的负矩阵 ---对应位置相减
print('m1 - m2 :\n', m1 - m2)
# 矩阵与 数的相乘 ----每一个元素都与数进行相乘
# 3 和 m1 进行相乘
# print('3 * m1 :\n', 3 * m1)
# # 矩阵 与矩阵 相乘
# # 规则:如果两个矩阵进行相乘,左矩阵的列 必须等于右矩阵的行,才能相乘
# # 生成一个左矩阵行、右矩阵列的矩阵
# print('m1 * m2:\n', m1 * m2)
# # np.matmul
# print('m1 * m2 :\n', np.matmul(m1, m2))
# # np.dot
# print('m1 * m2 :\n', np.dot(m1, m2))
# 矩阵对应位置元素相乘 ---同型矩阵
# print('m1、m2对应位置元素相乘:\n', np.multiply(m1, m2))
# 矩阵性质
# 矩阵转置
# print('m1 的转置:\n',m1.T)
# 矩阵的逆
# print('m1 的逆矩阵:\n', m1.I)
# # 逆矩阵性质---A*A的逆 = E ----> |A| = 0 --->直接报错,或者出现inf
# print('m1 * m1 的逆矩阵:\n', m1 * m1.I)
# 矩阵的视图
# 可以通过np.mat np.asmatrix将ndarray转化为矩阵
# 可以通过矩阵.A 来获取 ndarray
# print('m1 的视图:\n', m1.A)
# print('m1 视图的类型:\n', type(m1.A)) # <class 'numpy.ndarray'>
# 索引---对于ndarray,使用下标会降低维度
# 对于矩阵 --使用下标 不降低维度
# print('获取m1的元素', m1[0, :])
# 矩阵的共轭转置
# 先共轭,再转置 ---复数
# print('m1的共轭转置:\n',m1.H)
矩阵特有属性: