栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

week2-part7 Python中的广播机制 Broadcasting in python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

week2-part7 Python中的广播机制 Broadcasting in python

week2-part7 Python中的广播机制 Broadcasting in python 一、广播机制的介绍

我们在前面的代码中经常见到将矩阵与常数相加的情况,这样的可行性源于Python中的广播机制。在numpy中,当一个 4 × 1 4 times 1 4×1的列向量与一个常数做加法时,实际上会将常数扩展为一个 4 × 1 4 times 1 4×1的列向量,然后两者做逐元素加法。

让我们来看一个不一样一点的例子
[ 1 2 3 4 5 6 ] + [ 100 200 ] = [ 101 102 103 204 205 206 ] left[begin{array}{lll} 1 & 2 & 3 \ 4 & 5 & 6 end{array}right]+left[begin{array}{l} 100 \ 200 end{array}right]=left[begin{array}{lll} 101 & 102 & 103 \ 204 & 205 & 206 end{array}right] [14​25​36​]+[100200​]=[101204​102205​103206​]

​ 这里相当于是一个 m × n m times n m×n的矩阵加上一个 m × 1 m times 1 m×1的矩阵,在进行运算的时候,会先将 m × 1 m times 1 m×1的矩阵水平复制 n n n次,变成一个 m × n m times n m×n的矩阵,然后执行逐元素加法。

我们绘制图片来说明不同情况下的广播机制(其中虚线格子代表原本为空,但广播复制出来的元素)

二、注意事项

Python的特性允许你使用广播功能,这是程序的优点也是缺点。由于广播机制巨大的灵活性,如果你对于广播机智的工作原理这些细节不熟悉的话,就可能产生很细微、很奇怪的bug。例如,你不小心将一个列向量添加到一个行向量中,你以为它会报出维度不匹配或类型错误之类的错误,但实际上你会得到一个列向量和行向量的求和。

吴恩达老师在课中建议到,如果你不完全确定一个向量的维度,不妨多去尝试使用一些断言语句(assertion statement),如assert(a.shape == (5, 1))。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号