np.dot np.multiply 和*在np.array np.mat 的不同结果

import numpy as np

 观察以下两个输出语句结果的不同:

import numpy as np
 
a1 = np.array([[1, 2], [3, 4]])
c1 = np.array([[5,6],[7,8]])
 
b1 = np.mat([[1, 2], [3, 4]])
d1 = np.mat([[5,6],[7,8]])
 
print("a1乘c1的结果:",a1*c1)
print("b1乘d1的结果:",b1*d1)
输出结果会有不同,分别为:
a1乘c1的结果: [[ 5 12]
 [21 32]]
b1乘d1的结果: [[19 22]
 [43 50]]
于是我们可以得知:array()函数的乘法是矩阵元素所对应位置的两个数进行相乘!而mat()函数是遵循矩阵乘法规则,所以一定要谨慎使用这两个函数。
不过,无论用array()函数还是mat()函数,若让他们都遵循矩阵乘法的规则,可以对此二阶矩阵应用dot()函数,看下面计算:

print(dot(a1,c1))
print(dot(b1,d1))
输出结果均为:
[[19 22]
 [43 50]]
[[19 22]
 [43 50]]

 

import numpy as np
a1 = np.array([[1,2], [3,4]])
c1 = np.array([[5,6],[7,8]])
b1 = np.mat([[1,2], [3,4]])
d1 = np.mat([[5,6],[7,8]])
print(np.multiply(a1,c1))
print(np.multiply(b1,d1))

[[ 5 12]
 [21 32]]

[[ 5 12]
 [21 32]]


如果我们要算一个矩阵的平方(即两个相同矩阵相乘)。把输出函数变一下,观察一下结果的不同:
print("a1的平方",a1**2)
print("b1的平方",b1**2)
输出结果为:
a1的平方 [[ 1  4]
 [ 9 16]]
b1的平方 [[ 7 10]
 [15 22]]
结论用array()函数求的平方是对应位置之积形成的矩阵。用mat()函数求的平方实际上是遵循矩阵计算得出来的(注意:此时的a1、b1矩阵均是2X2的,遵循矩阵乘法计算,如果换成2X3的矩阵就不可以了,这点应注意)。

总结一下:array()函数的相乘中:*代表点乘(对应元素相乘),np.dot()代表矩阵乘积  np.multiply()代表对应元素点乘

mat()函数的乘法中:*代表矩阵乘,np.dot()矩阵乘法,np.multiply()代表对应元素点乘

对于生成的矩阵来说:

import numpy as np

x = np.mat([2,3])
y=np.mat([1,4])
print (np.dot(x,y))维度合适就是实现矩阵乘法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值