numpy 广播机制

1. 维度对其原则

  • 步骤
    1. 从右往左,维度数量向最长的对齐,遇到1跳过,没有则补1
      • 例如一些有4维数组shape=(2,3,4,5)和2维数组shape=(4,5)
      • 先将维数对齐,第二个数组变成(1,1,4,5)
    2. 数据维度值对齐, 只将维度值为1的扩充为其对方对应的值
      • 例如将(1,1,4,5)中的两个1值扩充为对应的维度值 (2,3,4,5)
示例1
  • a.shape=(1,2,3)可以和b.shape=(3,)或者c.shape=(2,3)或者shape=(1,3)的相加
    • 但是不能和d.shape=(1,2) 的相加, 因为是步骤1从右往左判断的 a.shape[-1] != d.shape[-1]
示例2
  • a.shape=(1,4,5)和b.shape=(8,1,5)可以相加,结果是 shape=(8,4,5)
    • 因为步骤2是将维度值为1的扩充成对方的对应值
2. 扩充
  • 所谓的扩充就是将数据重复
a = np.array([[1,2,3]])
# 当前a.shape=(1,3)
# 假设 a自动扩充成 (4,3),则数据变成
# [[1 2 3]
# [1 2 3]
# [1 2 3]
# [1 2 3]]
3. 留一个思考题
  • 请问 shape=(6,2,3,5)和shape=(2,1,5)的数组是否能够相加呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值