• 【Python】深入理解NumPy数组中的一维向量


    一、一维向量

    1.1 它到底是行向量还是列向量?

    思路:利用点乘两个向量维度进行对应的测试

    • 测试1
    import numpy as np
    a = np.array([[1,1,1,1],[1,1,1,1]]).T #4*2矩阵
      ...: b = np.array([2,3]) #长度为2的一维向量
      ...: print(a)
      ...: print(b)
      ...: print(a.shape)
      ...: print(b.shape)
      ...: print(np.dot(a,b))
    [[1 1]
     [1 1]
     [1 1]
     [1 1]]
    [2 3]
    (4, 2)
    (2,)
    [5 5 5 5]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    证明已经确定,一维向量b可以作为列向量与矩阵a相乘。

    • 测试2
    a = np.array([[1,1,1,1],[1,1,1,1]]).T #4*2矩阵
      ...: b = np.array([2,3]).T #长度为2的一维向量
      ...: print(a)
      ...: print(b)
      ...: print(a.shape)
      ...: print(b.shape)
      ...: print(np.dot(a,b))
    [[1 1]
     [1 1]
     [1 1]
     [1 1]]
    [2 3]
    (4, 2)
    (2,)
    [5 5 5 5]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    numpy中的一维向量既可以作为行向量,也可以作为列向量存在

    二、思考

    2.1 一维数组的转置

    一维数组的转置仍是自己本身,这点根据上述实验的一维向量b的shape就能看出来,b.T(转置后)维度不变

    它只是一个长度为2的一维向量

    2.2 习惯上用二维矩阵而不是一维矩阵来表示行向量和列向量

    因为二维必定能够确定他是行向量还是列向量。

    b = np.array([[2,3]]) #行向量
    c = np.array([[2],[3]]) #列向量
    print(b)
    print(c)
    print(b.shape)
    print(c.shape)
    
    [[2 3]]
    [[2]
     [3]]
    (1, 2)
    (2, 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、总结

    3.1 一维向量

    Numpy中的数组shape为(m,)说明它是一个一维数组,或者说是一个向量

    3.2 系统会自动判别行列向量

    但是具体是行向量还是列向量是很灵活的,再与矩阵进行矩阵乘法时,numpy会自动判断此时的一维数组应该取行向量还是列向量。

    3.3 总结

    所以说,无须纠结得到的一维数组是行向量还是列向量,或者说一维数组在用户看来就没有行列之分,其行列的不同在Python计算时会自动进行处理。

    3.4 事实

    numpy对数组的转置也可以看出来,对一维数组进行转置操作,numpy内部不会对其进行任何的操作。

  • 相关阅读:
    mysql8.0.31 源码阅读
    Python之函数详解
    python毕业设计作品基于django框架 多用户商城平台系统毕设成品(8)毕业设计论文模板
    MySQL面试题-索引的基本原理及相关面试题
    12000字解读瑞幸咖啡:“异军突起”与“绝处逢生”的奥秘
    Spring Boot (三)
    RISC-V函数调用约定 ABI
    go语言基本操作--四
    关于VS2019启动调试项目时提示拒绝访问
    Go十大常见错误第9篇:使用文件名称作为函数输入
  • 原文地址:https://blog.csdn.net/weixin_44943389/article/details/128045197