Numpy 中的矩阵

1、矩阵的创建

import numpy as np

# 可以使用asmatrix matrix mat bmat来创建矩阵

# 使用mat来创建矩阵  ---->mat = asmatrix, Equivalent to ``matrix(data, copy=False)
# (1)可以将 特殊字符串转化为矩阵
# m1 = np.mat('1 2 3;4 5 6;7 8 9')
# print('m1:\n', m1)
# print('m1:\n', type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
# (2)可以将列表嵌套转化为矩阵
# m1 = np.mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print('m1:\n', m1)
# print('m1:\n', type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
# (3)也可以将二维数组转化为矩阵
# m1 = np.mat(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
# print('m1:\n', m1)
# print('m1:\n', type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>

# 使用 matrix来创建矩阵
# (1)可以将 特殊字符串转化为矩阵
# m1 = np.matrix('1 2 3;4 5 6;7 8 9')
# print('m1:\n', m1)
# print('m1:\n', type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
# # (2)可以将列表嵌套转化为矩阵
# m1 = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print('m1:\n', m1)
# print('m1:\n', type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
# (3)也可以将二维数组转化为矩阵
# m1 = np.matrix(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
# print('m1:\n', m1)
# print('m1:\n', type(m1))

# bmat---组合矩阵
# (1)可以将二维数组转化为矩阵
# m1 = np.bmat(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
# print('m1:\n', m1)
# print('m1:\n', type(m1))

# (2)将数组组合成矩阵
# arr1 = np.array([[1, 2], [3, 4]])
# arr2 = np.zeros((2, 2), dtype=np.int32)
# print('arr1:\n', arr1)
# print('arr2:\n', arr2)
# print('*' * 100)

# 可以使用bmat将数组组合成矩阵
# m1 = np.bmat('arr1 arr2;arr2 arr1')
# m1 = np.bmat([[arr1, arr2], [arr2, arr1]])
# print('m1:\n', m1)
# print('m1:\n', type(m1))

2、矩阵的运算和性质

import numpy as np

# 创建矩阵
m1 = np.mat([[1, 2], [5, 3]])
m2 = np.asmatrix([[1, 3], [2, 4]])
print('m1:\n', m1)
# print('m1:\n', type(m1))
print('m2:\n', m2)
# print('m2:\n', type(m2))
print('*' * 100)

# 矩阵运算
# 矩阵与数进行相乘  ---数与矩阵中的每一个元素都进行相乘
# print('m1 * 3 :\n', 3 * m1)

# 矩阵的相加 ---同型矩阵对应位置元素进行相加
# print('m1 + m2:\n', m1 + m2)


# 矩阵减法 ---对应位置元素相减
# print('m1 - m2:\n', m1 - m2)
# print('m1 - m2:\n', m1 + (-1) * m2)

# 矩阵与矩阵相乘
# 规则:左矩阵的列必须等于右矩阵的行,才能进行相乘,生成一个左矩阵行*右矩阵列的矩阵
# print('m1 * m2:\n', m1 * m2)
# print('m1 * m2 :\n', np.matmul(m1, m2))
# 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)
# # 如果可逆 ---矩阵*矩阵的逆= E
# print('m1 * m1的逆:\n', m1 * m1.I)

# 共轭转置 --->先共轭再转置
# print('m1的共轭转置:\n', m1.H)

# 矩阵的视图
# 可以通过np.mat  np.asmatrix将ndarray转化为矩阵
# 可以通过 矩阵.A 获取到矩阵中ndarray
# print('m1的视图:\n', m1.A)
# print('m1的视图:\n', type(m1.A))  # <class 'numpy.ndarray'>


# 矩阵与ndarray区别
# 索引的时候
# print('索引矩阵:\n', m1[0, :])
# 如果获取的为子矩阵,使用下标不会降低维度的,矩阵永远都是二维的

# print('m1的维度:', m1.ndim)
# print('m1的形状:', m1.shape)
# print('m1的元素个数:', m1.size)
# print('m1的数据类型:', m1.dtype)
# print('m1的元素占位大小:', m1.itemsize)


共轭转置

原文地址:https://www.cnblogs.com/duxiangjie/p/15749313.html