• NumPy矩阵对象介绍及方法


    1. 介绍

    • 在数学上,矩阵(Matrix)是一个按照矩形阵列排列的负数或实数集合,但在NumPy中,矩阵np.matrix是数组np.ndarray的派生类。这意味着矩阵本质上是一个数组,拥有数组的所有属性和方法;同时,矩阵又有一些不同于数组的特性和方法
    • 首先,矩阵是二维的,不能像数组一样幻化成任意维度,即使展开或切片,返回也是二维的;其次,矩阵和矩阵、矩阵和数组都可以做加减乘除运算,运算结果都是返回矩阵;最后,矩阵的乘法不同于数组乘法

    2. 创建矩阵

    np.mat()函数用于创建矩阵,它可以接受列表、数组甚至是字符串等形式的参数,还可以使用dtype参数指定数据类型,其代码如下:

    import numpy as np
    import numpy.matlib as mat
    
    print(np.mat([[1,2,3],[4,5,6]], dtype=np.int)) # 使用列表创建矩阵
    print(np.mat(np.arange(6).reshape((2,3)))) # 使用数组创建矩阵
    print(np.mat('1 4 7; 2 5 8; 3 6 9')) # 使用Matlab风格的字符串创建矩阵
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    此外,和生成特殊值数组类似,numpy.matlib子模块也提供了多个函数用于生成特殊值矩阵和随机数矩阵

    print(mat.zeros((2,3))) # 全0矩阵
    print(mat.ones((2,3))) # 全1矩阵
    print(mat.eye(3)) # 单位矩阵
    print(mat.empty((2,3))) # 空矩阵
    print(mat.rand((2,3))) # [0,1)区间随机数矩阵
    print(mat.randn((2,3))) # 均值0方差1的高斯(正态)分布矩阵
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 矩阵特有属性

    矩阵有几个特有的属性,如转置矩阵、逆矩阵、共轭矩阵、共轭转置矩阵等。

    import numpy as np
    
    m = np.mat(np.arange(6).reshape((2,3)))
    print(m)
    print(m.T) # 返回自身的转置矩阵
    print(m.H) # 返回自身的共轭转置矩阵
    print(m.I) # 返回自身的逆矩阵
    print(m.A) # 返回自身数据的视图(ndarray类)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. 矩阵乘法

    矩阵运算和数组运算大致相同,只有乘法运算有较大差别。两个数组相乘就是对应元素相乘,条件是两个数组的结构相同。事实上,及时两个数组的结构不同,只要满足特定条件,也能做乘法运算

    import numpy as np
    
    a = np.random.randint(0,10,(2,3))
    print(a)
    
    b = np.random.randint(0,10,3)
    print(b)
    
    print(a*b) # shape不同的两个数组也可以相乘
    print(b*a)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    除了对应元素相乘,数组还可以使用np.dot()函数相乘

    a = np.random.randint(0,10,(2,3))
    b = np.random.randint(0,10,3)
    c = np.random.randint(0,10,(3,2))
    
    print(np.dot(a,b))
    print(np.dot(a,c))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    属于数组而言,使用星号相乘和使用np.dot()函数相乘是完全不同的两种乘法:对于矩阵来说,不管是使用星号相乘还是使用np.dot()函数相乘,结果都是np.dot()函数相乘的结果,因为矩阵没有对应元素相乘这个概念。np.dot()函数实现的乘法就是矩阵乘法

    不是所有的矩阵都能相乘,矩阵乘法不满足交换律。概括来说,就是矩阵A的各行逐一去乘矩阵B的各列。例如,矩阵A的第1行和矩阵B的第1列,它们的元素个数一定相等,对应元素相乘后求和的值作为结果矩阵第1行第1列的值。又如,矩阵A的第3行和矩阵B的第3列,对应元素相乘后求和的值作为结果矩阵第3行第3列的值。以此类推,最终得到矩阵A乘矩阵B的结果矩阵

  • 相关阅读:
    看完这波 Android 面试题;助你斩获心中 offer
    VictoriaMetrics之集群版
    docker镜像管理
    50行Python代码白嫖Github Actions, 每天检测收录优质项目的存活状态(提供csv纯净数据下载)
    16:00面试,16:08就出来了,问的问题有点变态。。。
    【IPC 通信】信号处理接口 Signal API(2)
    MySQL索引
    vue中 axios get请求,使用formData传递参数给后台
    Python实现约瑟夫生者死者游戏可视化(单向循环链表实现)
    正点原子嵌入式linux驱动开发——Linux 4G通信
  • 原文地址:https://blog.csdn.net/feizuiku0116/article/details/126705902