广播是指NumPy在算术运算期间处理不同形状的数组的能力。对数组的算术运算通常在相应的元素上进行。如果两个阵列具有完全相同的形状,这些操作就会被无缝执行。
【例3.31】
import numpy as np a = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b print c
输出如下:
[10 40 90 160]
如果两个数组的维数不相同,元素到元素的操作就是不可能的。然而,在NumPy中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。
如果满足以下规则,就可以进行广播:
如果上述规则产生有效结果,并且满足以下条件之一,那么数组被称为可广播的。
【例3.32】
import numpy as np a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0, 30.0]]) b = np.array([1.0,2.0,3.0]) print '第一个数组:' print a print '\n' print '第二个数组:' print b print '\n' print '第一个数组加第二个数组:' print a + b
输出如下:
第一个数组: [[ 0. 0. 0.] [ 10. 10. 10.] [ 20. 20. 20.] [ 30. 30. 30.]] 第二个数组: [ 1. 2. 3.] 第一个数组加第二个数组: [[ 1. 2. 3.] [ 11. 12. 13.] [ 21. 22. 23.] [ 31. 32. 33.]]