广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
a = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b print (c)
输出为:
[ 10 40 90 160]
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
a = np.array([[0, 0, 0], [10, 10, 10], [20, 20, 20], [30, 30, 30]]) b = np.array([0, 1, 2]) print(a + b)
输出为
[[ 0 1 2]
[10 11 12]
[20 21 22]
[30 31 32]]
上述例子中 a为4*3数字,b为1*3数组,自动将b转化为4*3数组。则b的第2 3 4行都为(0,1,2)
在进行相加得结果。相乘的话也是类似
tile函数:
arr = np.array([1,2,3]) arr1 = np.tile(arr,(2,2)) print(arr1)
输出为:
[[1 2 3 1 2 3]
[1 2 3 1 2 3]]
相当于将arr在行和列各扩展了两倍
arr = np.array([1,2,3]) arr1 = np.tile(arr,(2,1)) print(arr1)
[[1 2 3]
[1 2 3]]
则仅在行扩展了两倍