用于描述如何在算术运算期间处理具有不同形状的数组。
在满足特定限制的前提下,较小的数组“广播至”较大的数组,使两者形状互相兼容。
广播提供了一种矢量化数组操作的方法,以便在C而不是Python中进行循环。它可以在不制作不必要的数据副本的情况下实现这一点,通常导致高效的算法实现。然而,有些情况下广播是一个坏主意,因为它会导致内存使用效率低下,从而减慢计算速度。
从尾尺寸(最后一个维度)开始,逐元素比较两个数组的形状,每一个维度均需满足以下三种情况之一。
针对以上三种条件,运算结果会是这样:
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): 2 x 1
B (3d array): 8 x 4 x 3 # second from last dimensions mismatched
【1】https://www.numpy.org.cn/user/basics/broadcasting.html
【2】https://zhuanlan.zhihu.com/p/86997775