学习python的numpy模块时,广播的机制极大的方便了我们的编程,快来一起学习一下!
工具/原料
python 3
numpy
理解
1、先用一个例子来笼统的展示下,比如我们想让一个二维向量中的每一个元素都变为原来的两倍。
2、我们茧盯璜阝就可以直接乘以标量2,但是我们看不到的是:标量2在numpy的内部中完成了广播!可以这样理解:首先将标量2变成向量。
3、然后在复制广播以匹配(3,2)的形状大小。请注意这里的复制并不代表numpy底殿秩痊肭层就是复制扩增数据,其实在底层C语言中,是使用循环迭代计算的,因此大大节约内存!
4、最终就会变成下图的样式进行计算。
5、当然我们如果想实现第一行变成2倍,第二行变成3倍的话,也能利用广播!这时候我们初始传入的就得是一个二维向量啦:二行一列。
6、广播会以复制的方式匹配好形状。
实践
1、我们对上面的样例操作进行以下实践,可以看到结果和我们预想的一致。
2、但是如果我们提供了一个不方便广播的数据,那么就会失败了。一般适合于广播的向量数据,有一个维度应该是“满”的。
3、我转而又想,理论上只要维度成比例就可以了啊,但是实践来说是不可行的。所以当前可行的广播举措有:1. 标量2. 某一维度“满”且另一维度为1