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)
    
    
    

    共轭转置

  • 相关阅读:
    ES6小点心第二弹——底部浮现弹窗
    ES6小点心之通用弹窗
    从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
    【quickhybrid】如何实现一个Hybrid框架
    【开源】canvas图像裁剪、压缩、旋转
    优雅的H5下拉刷新【minirefresh】
    前端筑基篇(一)->ajax跨域原理以及解决方案
    钉钉开放与商业化团队前端大量招人
    AJAX请求真的不安全么?谈谈Web安全与AJAX的关系。
    【quickhybrid】iOS端的项目实现
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/15749313.html
Copyright © 2011-2022 走看看