📅  最后修改于: 2020-11-08 07:36:16             🧑  作者: Mango
术语广播是指NumPy在算术运算期间处理不同形状的数组的能力。数组上的算术运算通常在相应的元素上完成。如果两个数组的形状完全相同,则可以平稳执行这些操作。
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中仍然可以对非相似形状的数组进行操作。较小的阵列将广播为较大的阵列,以便它们具有兼容的形状。
如果满足以下规则,则可以进行广播-
ndim小于另一个的数组的形状前面带有“ 1”。
输出形状的每个尺寸中的尺寸是该尺寸中输入尺寸的最大值。
如果输入在特定维度上的大小与输出大小匹配或其值正好为1,则可以将其用于计算。
如果输入的维大小为1,则该维中的第一个数据条目将用于沿该维的所有计算。
如果上述规则产生有效结果且以下条件之一为真,则表示一组数组可以广播:
数组具有完全相同的形状。
数组具有相同的维数,每个维的长度可以是公共长度或1。
尺寸过小的数组可以使其形状的长度为1,因此上述属性为true。
以下程序显示了广播示例。
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 'First array:'
print a
print '\n'
print 'Second array:'
print b
print '\n'
print 'First Array + Second Array'
print a + b
该程序的输出如下:
First array:
[[ 0. 0. 0.]
[ 10. 10. 10.]
[ 20. 20. 20.]
[ 30. 30. 30.]]
Second array:
[ 1. 2. 3.]
First Array + Second Array
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
下图演示了如何广播数组b以使其与a兼容。