3.6 矩阵运算

3.6.1 矩阵运算规则

  矩阵的加减法运算规则与数组相同,即元素运算,其结果返回新的矩阵。倍乘数运算也是矩阵内元素乘以倍数,返回新的矩阵,且倍数应置于运算符左边。
  矩阵乘法运算规则是,只有当乘法运算符左边矩阵的列数等于右边矩阵的行数时,两个矩阵才能进行乘法运算,即 m×n 矩阵与 n×p 矩阵满足相乘条件,且位置不能互换。具体步骤是,左矩阵第一行乘以右矩阵第一列分别相乘,第一个数乘第一个数,乘完之后相加,即为结果的第一行第一列的数,依次往下运算 。

3.6.2 matrix对象

  NumPy和Matlab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,可以调用相应的函数对数组进行矩阵运算。NumPy库提供了matrix类,使用matrix类创建矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算。示例代码:

>>>m1 = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])        #直接生成矩阵对象
>>>m1
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>>a = np.arange(9).reshape((3, 3))
>>>m2 = np.matrix(a)        #将数组转换成矩阵
>>>m2
matrix([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
>>>m1 + m2        #矩阵加法即元素相加,与数组运算一样
matrix([[ 1,  3,  5],
        [ 7,  9, 11],
        [13, 15, 17]])
>>>m3 = m1*m2        #矩阵乘法
>>>m3
matrix([[ 24,  30,  36],
        [ 51,  66,  81],
        [ 78, 102, 126]])
>>>type(m3)
numpy.matrixlib.defmatrix.matrix

3.6.3 数组的点积

  ufunc提供的dot()函数计算两个数组的点积,其满足矩阵乘法运算规则,它返回的是一个标量(只有大小没有方向的一个值)。示例代码:

>>>a1 = np.arange(1, 10).reshape((3, 3))
>>>a1
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>>a2 = np.arange(9).reshape((3, 3))
>>>a2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>>a3 = a1.dot(a2)
>>>a3
array([[ 24,  30,  36],
       [ 51,  66,  81],
       [ 78, 102, 126]])
>>>type(a3)
numpy.ndarray
>>>a4 = np.dot(a1, a2)          #点积运算的另一种形式,等价于a1.dot(a2)
>>>a4
array([[ 24,  30,  36],
       [ 51,  66,  81],
       [ 78, 102, 126]])

  以上两个示例显示,数组点积的运算规则与矩阵乘法相同,不过点积返回的对象a3是ndarray类型,矩阵乘法返回的对象m3是matrix类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值