Numpy中的广播(Broadcast)讲解简单易懂,困扰已久,终于想通了
简单,清晰,一定能懂
- 先简单谈谈什么是Numpy,就是Python中核心的科学计算包,提供高维的数组和一些工具。
- 每次遇到广播都无法判断是否可以进行广播。想了良久,最后直接看官方文档,还是讲的简单明了。
- 然后我们先做一步工作,至关重要,把两个数组的维度以一下形式写出或在脑海想出。也就是靠右对齐。
A (3d array): 256 x 256 x 3
B (1d array): 3
Result (3d array): 256 x 256 x 3
A (4d array): 8 x 1 x 6 x 1
B (3d array): 7 x 1 x 5
Result (4d array): 8 x 7 x 6 x 5
A (2d array): 5 x 4
B (1d array): 1
Result (2d array): 5 x 4
A (2d array): 5 x 4
B (1d array): 4
Result (2d array): 5 x 4
A (3d array): 15 x 3 x 5
B (3d array): 15 x 1 x 5
Result (3d array): 15 x 3 x 5
A (3d array): 15 x 3 x 5
B (2d array): 3 x 5
Result (3d array): 15 x 3 x 5
A (3d array): 15 x 3 x 5
B (2d array): 3 x 1
Result (3d array): 15 x 3 x 5
我们看这个例子,对齐后从右开始的第一列,
是A对应是5和B对应是1,其中一个为1,然后第二列是3和3,所以可以进行广播。
- 只需遵循两条规则:1、对应位置上数字相同,或2、其中有一个数为1。在上面的例子中,我结合一个进行讲解应该就懂了,否则不能够进行广播。
- 给出不能广播的例子,也结合例子讲解一个:
A (1d array): 3
B (1d array): 4 # trailing dimensions do not match
我们直接可以发现第一列3和4不同,所以不能广播
A (2d array): 2 x 1
B (3d array): 8 x 4 x 3 # second from last dimensions mismatched
从右开始第一列,是A对应为1和B对应为3,是符合条件的,但是第二列A对应为2,但是B对应为4,它们中没有一个1,同时两者没有匹配。所以不能广播。
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:
“华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.