zoukankan      html  css  js  c++  java
  • 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)
    
    
    

    共轭转置

  • 相关阅读:
    centos7安装YouCompleteMe,vim打造成C++的IDE
    java循环定时器@Scheduled的使用
    js使用“toFixed( )”保留小数点后两位
    linux小本
    解决Maven资源过滤问题
    在Maven普通项目上添加Web app的支持
    项目中添加lib依赖
    回顾Servlet
    Tomcat 中文乱码
    Initialization failed for 'https://start.spring.io' Please check URL
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/15749313.html
Copyright © 2011-2022 走看看