python3 numpy中矩阵np.dot(a,b)乘法运算

python np.dot(a,b)乘法运算

首先我们知道矩阵运算是不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的
另外np.dot(a,b)和a.dot(b)果是一样的

1.numpy中数组(矩阵)相乘np.dot(a,b)运算:

对于两数组a和b :
示例一:

a = np.array([[3], [3], [3]])  # (3,1)
b = np.array([2, 2, 1])  # (3,)

print(a, "\na的shape", a.shape)
print(b, "\nb的shape", b.shape)
c = b.dot(a)
print(c, "\nc的shape",  c.shape)

输出:

 [3]
 [3]] 
a的shape (3, 1)
[2 2 1] 
b的shape (3,)
[15] 
c的shape (1,)

示例二:

a = np.array([[2,2,2,1],[3,3,3,1],[4,4,4,4]])  # shape=(3,4)
b = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])  # shape=(4,3)

可以直接看他们的shape:a的shape为(3, 4)设为(m, n);b的shape为(4, 3)设为(x, y)
对于上面两个数组a,b:
np.dot(a,b)的运算条件为:n==x,如果a的shape变为(4, 3)则两则无法dot

  • 简单来说规律就是:如果a.shape=(m,n),b.shape=(x,y)那么**np.dot(a,b)**的运算条件为:n=x (这一点用于在python理解和快速判断数组的shape是否用对了)
  • 实际上数组运算的规律将两个数组画出来,是这样的:
    在这里插入图片描述
    也就是矩阵的乘法运算

2.np.dot(a,b)运算之后的结果解析

规律:dot之后会将两组数组中相等的(符合dot条件的)维度消掉,得到剩下的维度组合成新的数组,如果剩下只有一个维度则为行(对应一维),列是无
对于a.shape=(m,n),b.shape=(x,y)
dot之后n和x会消掉,结果shape变成(m,y)
如果n为1(或者空),shape变为(y,)
e.g1:

a = np.array([1,1,1]) # shape=(3,)
b = np.array([[3],[3],[3]]) # shape=(3,1)

print(np.dot(a,b))
print("dot之后的shape为:", np.dot(a,b).shape)

那么,3和3消掉,剩下只有一个数1,对应1行没有列==>(1,)
运算结果:
[9]
dot之后的shape为:(1,)

e.g2:

a.shape=(4,1) 
b.shape=(1,4)

那么( 1和1消掉,剩下(4,4) )
np.dot(a,b)的shape为(4,4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值