广播(broadcast) --numpy

1. 进行广播适用的情况:

broadcast 是numpy对不同形状(shape)的数组进行数值计算的方式,当不同形状(shape)的数组进行计算,就会自动出发广播机制

通常进行算术计算的数组形状需要完全相同,即:
a.shape=b.shape,此时计算结果是a与b数组对应位置数字计算;
但是在满足一定条件的情况下a.shape=b.shape的条件可以适当放松:

##  1. 1  一个数组与一个标量(单个数字)
```powershell
1) : 一个数组与一个标量:
    运算过程中可以认为标量被拉伸到与数组形状(shape)相同
    注意:
    (1) 拉伸的比喻是概念性的,实际数据并未发生复制,因此与真正的数组相比
        内存占用更少,计算更高效

import numpy as np

a = np.arange(6).reshape(3, 2)
b1 = np.array([[2, 2],
               [2, 2],
               [2, 2]])

b2 = 2

print('a+b1: ', a+b1, sep='\n')
print('a+b2: ', a+b2, sep='\n')

在这里插入图片描述
虽然数组b1与标量b2与数组a相加的计算结果相同,且在理解上可以认为标量b2被拉伸成数组b1的形状,但是使用数组b2占用内存更少,计算更高效。

1.2 其中一个数组为包含单个值的一维数组

a = np.arange(12).reshape(3, 1, 4)
b2 = np.array([3])
print(a)
print('a+b2: ', a+b2, sep='\n')

在这里插入图片描述

1.3 数组中对应轴的长度相同

a = np.arange(12).reshape(3, 1, 4)
b2 = np.ones((1,4))
print('a:', a, sep='\n')
print('a+b2: ', a+b2, sep='\n')

在这里插入图片描述

a = np.arange(12).reshape(3, 1, 4)
b2 = np.ones((4))
print('a:', a, sep='\n')
print('a+b2: ', a+b2, sep='\n')

在这里插入图片描述

1.4 对应轴的长度不同,但其中一个长度为1

a = np.arange(6).reshape(2, 3, 1)
b2 = np.ones((1, 4))
print('a:', a, sep='\n')
print('a+b2: ', a+b2, sep='\n')

在这里插入图片描述
在这里插入图片描述

2. 总结:

看两个数组之间进行运算时能否广播,需要从aixs的最大值向最小值方向查看,将两个数组形状右对齐,依次比较,若对应位置的两个数组形状值相同,则可以广播;若数值不同,则其中一个数组形状值为1,可以广播;否则无法广播。

2.1 可以广播的情形举例

在这里插入图片描述

2.2 不能广播的情形举例

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值