zoukankan      html  css  js  c++  java
  • Python 矩阵与矩阵以及矩阵与向量的乘法

    import numpy as np

    numpy模块的array相乘时,有两种方式:一是矩阵形式,二是挨个相乘。

    需要用矩阵形式相乘时,则要用np.dot()函数。

    #矩阵与矩阵相乘
    a = np.array([[1,2,3],[4,5,6],[7,8,9]])
    c = a.copy()
    print(a * c)
    print(np.dot(a, c))
    #a*c 得出的结果是ac中每个元素依次相乘,为3x3的矩阵
    #np.dot(a, c) 得到的结果是ac进行矩阵相乘,为3x3的矩阵

    #矩阵与向量:

    a = np.array([[1,2,3],[4,5,6],[7,8,9]])
    b = np.array([1,2,3])
    print(a.shape) #(3,3)
    print(b.shape) #(3,)
    print(a*b)
    #a中的每-行的每个数与b中的每一行的每个数都相乘(相加时也是一样,等价于b = [[1,2,3],[1,2,3],[1,2,3]]
    #array([[1,4,9],[4,10,18],[7,16,27]])
    print(b*a) #这个结果与a*b是一样的

    b = b.T
    b.shape # 即使对b转置,b依然为(3,)b为行向量还是列向量时,是看具体用的时候在矩阵左边还是右边,会自动变换
    #a 3*3矩阵,b3*1的矩阵,可以相乘
    print(np.dot(a, b)) # array([14, 32, 50]),此时b当作一个3x1的列向量,得到的结果为(3,)

    #b3*1的矩阵a 3*3矩阵,从矩阵维度来说,不能直接相乘,python会自动转换
    print(np.dot(b, a)) # array([30, 36, 42]),此时b当作一个1x3的行向量,得到的结果为(3,)
    print(np.dot(b.T, a)) # array([30, 36, 42]),此时b当作一个1x3的行向量,得到的结果为(3,)
  • 相关阅读:
    vmware 安装提示the msi failed
    答辩修改记录
    科研系统修改记录
    python2.7学习记录之四
    sql语句--查询语句(MySQL)
    lei muban
    共模与差模的区别是什么?
    linux pinmux 引脚多路复用驱动分析与使用
    纯虚函数
    内核与驱动文件的version magic匹配问题
  • 原文地址:https://www.cnblogs.com/adong7639/p/7592531.html
Copyright © 2011-2022 走看看