广播 (Broadcast) 是numpy 对不同形状 (shape) 的数组进行数值计算处理的一种机制, 对数组的算术运算通常在相应的元素上进行。
#若两个数组a,b形状相同,即a.shape==b.shape——两个数组对应位相乘(其他运算符也行)
import numpy as np
a1= np.array([1,2,3,4])
b1= np.array([10,2,3,4])
print (a1 * b1)#[10 4 9 16]
print (a1+b1)#[11 4 6 8]
print (a1-b1)#[-9 0 0 0]
print (a1/b1)#[0.1 1. 1. 1. ]
print (a1%b1)#[1 0 0 0]
print (a1//b1)#[0 1 1 1]
print (a1+20)#[21 22 23 24]
当运算中的
2
个数组的形状不同时,
numpy
将自动触发广播机制。
1.对应维度的长度相等,(即必须要小的那个数组行或列和大的数组某个对应维度相同,小的那个数组的形状会扩展使他们具有相同的形状,再进行运算
2.对应维度的长度其中一个为1,长度为1的维度会被扩展,这两个数组在该维度的形状将会被扩展为较大的长度
当两个数组在维度上的长度既不相等也不为1,即为不可广播的维度,会报错
#若两个数组a,b形状不同,numpy将触发广播机制
a2= np.array([[[1,1],[2,2]],[[3,3],[4,4]]])
b2= np.array([[1,2],[3,4]])
print (a2 * b2)
# [[[ 1 2]
# [ 6 8]]
#
# [[ 3 6]
# [12 16]]]
print (a2 + b2)
# [[[2 3]
# [5 6]]
#
# [[4 5]
# [7 8]]]
print("----------------")
a3= np.array([[[1,1],[2,2]],[[3,3],[4,4]]])
b3= np.array([1,2])
print (a3 * b3)
# [[[1 2]
# [2 4]]
#
# [[3 6]
# [4 8]]]
print (a3 + b3)
# [[[2 3]
# [3 4]]
#
# [[4 5]
# [5 6]]]
print("----------------")
a4= np.array([1,2,3])
b4= np.array([1,2])
print (a4 + b4)#报错
标签:a1,Broadcast,np,广播,b1,数组,print,array,NumPy
From: https://blog.csdn.net/m0_68153457/article/details/140977333