对于python的numpy模块产生的两个array,如果它们的维度相同,则对两个array的加减乘除其实就是对对应位置的元素进行加减乘除。
当两个array的维度不相同,可以使用Broadcasting功能对其进行加减乘除,需满足:其中一个array的维度为1
i.e.
Image (3d array): 256 x 256 x 3
Scale (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
Addition: 使用broadcasting在很多时候能够提高运行效率,因为向量化的操作能够提高速度(Broadcasting provides a means of vectorizing array operations so that looping occurs in C instead of Python. It does this without making needless copies of data and usually leads to efficient algorithm implementations)。
# 代码段1
a = np.array([1.0, 2.0, 3.0])
b = np.array([2.0, 2.0, 2.0])
a * b
# result 1
# array([ 2., 4., 6.])
# 代码段2
a = np.array([1.0, 2.0, 3.0])
b = 2.0
a * b
# result 2
# array([ 2., 4., 6.])
上述两段代码得到的结论一样,但代码段2的效率更高。