广播:
x= np.arange(12).reshape((3,4))
a= np.arange(3)
b=np.arange(3)[;,np.newaxis]
c=a+b
a,b会扩散成公共的形状进行计算
广播规则:
如果两个数组的维度数不相同,那么小维度的数组形状将会在最左边补上1
如果两个数组形状在任意维度都不匹配,那么会沿着维度为1的维度扩散成另一数组形状
如果两个数组的形状在任意维度都不匹配,且没有任何维度为1则会引发异常
示例:
m=np.ones((2,3))
a=np.arange(3)
m.shape =(2,3)
a.shape(3,)
由于第一规则,a.shape ->(1,3)
由于第二规则 a.shape ->(2,3)
示例:
a=np.arange(3).reshape((3,1))
b=np.arange(3)
a.shape = (3,1)
b.shape(3,)
由于规则一:
b.shape ->(1,3)
由于规则二:
a.shape ->(3,3)
b.shape ->(3,3)
广播应用:
归一化
二维数组
x=np.linspace(0,5,50)
y=np.linspace(0,5,50)[:,np.newaxis]
z=np.sin(x) **10+np.cos(10+y*x)*np.cos(x)