题图:fab-lentz-253417-unsplash
这是第 202 篇原创
建议阅读时间:5 分钟
如果对您有帮助,欢迎点赞和转发。
优秀的知识分享氛围,需要你我共同努力。
1 问答记录系列
实践出真知,相互讨论碰撞出思想的火花。【原创互助答疑群】内有的问答很精彩。于是脑子里闪现出一个想法,为什么不把整个的问答过程记录总结下来,分享给更多的小伙伴呢? 于是就有了这个推送系列模块,相信大家能从中受益。欢迎小伙伴在群内积极参与讨论。
2 Python的 * 和 NumPy的广播
几天前,一个小伙伴问:Python的 * 和广播机制是一回事吗?它们相似,但实则不同!
1) 先了解下python中的list * 标量,结果是复制对应的元素,如下所示:
list * 标量等于按元素或按行的复制。
2) NumPy 的广播机制,先看一个例子,如下:
上面的例子,xx 的 shape是(4,1),y的 shape(5,),NumPy支持的这类操作,被称为广播机制。
3 NumPy广播 通用规则
注意,不是任意形状间的ndarray都能做广播,必须满足一定的约束条件。对两个NumPy的 ndarray 进行操作时,NumPy 会比较形状,开始于最靠后的维度(如5*4*6,最靠后的维度长度是6)。当以下情形出现时,维度是兼容的:
1)相等
2)其中一个长度为 1
可以看到,广播是按照右对齐的方式,其中长度为1的维度被自动广播。
4 NumPy广播 好处
先看一个例子。一个ndarray和一个标量相乘,这是广播机制:
如果我们不按照广播机制,我们可以这样写:
标量值 b 在计算时被伸展为 与 a 一样的形状,伸展后 b 的每一个元素都是原来标量值的复制。实际上,NumPy 并不需要真的复制这些标量值,所以广播运算在内存和计算效率上更高效。
5 欢迎入群讨论
以上错误之处,有疑问的地方,或者待优化改进之处,欢迎公号内留言、微信群内留言,微信群内已分享完整的PPT。
微信群规定,群内严禁分享推文,只做交流讨论。欢迎扫描群主微信,加入原创互助答疑微信群。请注明:加群
最近推文:
探索下去,迎接未知的精彩。。。Python神经网络| 一篇很棒的实战笔记,附源码牢记初心,就是保持内心的几分纯真3分钟理解 支持向量机中最出神的第一笔
领取专属 10元无门槛券
私享最新 技术干货