广播可以简单理解为用于不同大小数组的二进制通用函数(加、减、乘等)的一组规则。
1. 介绍
对于同样大小的数组,二进制操作是对相应元素逐个计算。
![](https://img.haomeiwen.com/i11013023/bd50144502a16b0d.png)
广播允许这些二进制操作可以用于不同大小的数组。例如,可以简单地将一个标量(可以认为是一个零维的数组)和一个数组相加:
![](https://img.haomeiwen.com/i11013023/e9a30fb68778894e.png)
可以认为这个操作是将数值 5 扩展或重复至数组 [5, 5, 5],然后执行加法。NumPy广播功能的好处是,这种对值的重复实际上并没有发生,但是这是一种很好用的理解广播的模型。
![](https://img.haomeiwen.com/i11013023/1865ff5ce054ca5a.png)
![](https://img.haomeiwen.com/i11013023/f86a29ea313c9cef.png)
2. 规则
NumPy 的广播遵循一组严格的规则,设定这组规则是为了决定两个数组间的操作。
- 规则1:如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1。
- 规则 2:如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度为 1 的维度扩展以匹配另外一个数组的形状。
- 规则 3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于 1,那么会引发异常。
![](https://img.haomeiwen.com/i11013023/b0bc77d4357213ef.png)
![](https://img.haomeiwen.com/i11013023/40f8e81479b22bfb.png)
![](https://img.haomeiwen.com/i11013023/e459cfd9bfde0348.png)
网友评论