Broadcast 机制——numpy

几种情况:
这里只讲加减,矩阵乘法严格按照矩阵乘法规则(尾首同)。

  • 注意比较维度数时从右至左。
  • (2, 3, 5)维数为3, 各维维度数为2, 3, 5

1.维数相等时。

  • 各维度数均相等。这个不需多说。按位运算即可。
  • 至少有一维维度数不等,不可广播。
    Exception:上条中,不等的维度数,有为1者,可广播。
    看例子:
a = np.arange(9).reshape( 3, 3) 
b = np.arange(6).reshape( 2, 3)
print(a, "\n", b, "\n", a+b)  
# ValueError: operands could not be broadcast together with shapes (3,3) (2,3)

a = np.arange(9).reshape( 3, 3) 
b = np.arange(6).reshape( 3, 2)
print(a, "\n", b, "\n", a+b)
# ValueError: operands could not be broadcast together with shapes (3,3) (3,2) 

a = np.arange(9).reshape( 3, 3) 
b = np.arange(3).reshape( 3, 1)
print(a, "\n", b, "\n", a+b)  # 可打印

a = np.arange(9).reshape( 3, 3) 
b = np.arange(2).reshape( 2, 1)
print(a, "\n", b, "\n", a+b)
# ValueError: operands could not be broadcast together with shapes (3,3) (2,1) 

2.维度不等时。

  • 从右至左,至少有一维维度数不等时不可广播。(同上:不同处,为空或维度数为1者除外)
a = np.arange(24).reshape(4, 2, 3) 
b = np.arange(9).reshape(3, 3)
print(a, "\n", b, "\n", a+b)
# ValueError: operands could not be broadcast together with shapes (4,2,3) (3,3) 

a = np.arange(18).reshape(2, 3, 3) 
b = np.arange(2).reshape(2)
print(a, "\n", b, "\n", a+b)
# ValueError: operands could not be broadcast together with shapes (2,3,3) (2,) 

a = np.arange(12).reshape(4,1,3) 
b = np.arange(9).reshape(3, 3)
print(a, "\n", b, "\n", a+b)  # 可打印

a = np.arange(18).reshape(2,3,3) 
b = np.arange(3).reshape(3)
print(a, "\n", b, "\n", a+b) # 可打印

其实抓住第二点。就可以全部概括这个BroadCast。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值