Numpy中array和matrix的乘法

Numpy中矩阵乘法问题

Numpy中的矩阵乘法分为两大情况,使用numpy.array和使用numpy.matrix. Numpy确实重载了*操作符,可以直接对array或者matrix对象进行乘法运算,但是在不同对象上,其意义是有区别的。

对于array对象

*(或multiply)代表的是并不是矩阵的乘法规则,而是简单的数量积,即对应位置元素相乘后的积相加。

import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[1,2],[3,4]])
print(a*b)
#[[ 1  4]
 #[ 9 16]]

如果在array对象上要进行严格的矩阵乘法,即矢量乘法,则必须使用.dot()或者.matmul()函数,两者是等效的。

import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[1,2],[3,4]])
print(np.dot(a,b))
print(np.matmul(a,b))
# [[ 7 10]
#  [15 22]]
# [[ 7 10]
#  [15 22]]

对于matrix对象

对于matrix,情况就悄悄相反了。
*表示的是矢量积,如果希望以数量积方式运行,则必须使用np.multiply函数。因为*重载矩阵运算规则只限于matrix对象。

import numpy as np

x=np.mat('1 2;3 4')
y=np.mat('1 2;3 4')
print(x*y)
print(np.multiply(x,y))
# [[ 7 10]
#  [15 22]]
# [[ 1  4]
#  [ 9 16]]

总结

1、对于array对象,*np.multiply函数代表的是数量积,如果希望使用矩阵的乘法规则,则应该调用np.dotnp.matmul函数。
2、对于matrix对象,*直接代表了原生的矩阵乘法,而如果特殊情况下需要使用数量积,则应该使用np.multiply函数。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值