广播的规则
规则1:如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1。
规则2:如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度为一的维度扩展以匹配另一个数组的形状。
规则3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于一,那么会引发异常。
示例1:
a = np.ones((2,3)) a.shape = (2,3)
b = np.arange(3) b.shape = (3,)
根据规则1,数组b的维度数更小,所以在其左边补1,那么
a.shape为(2,3)
b.shape为(1,3)
示例2:
a = np.arange(3).reshape((3,1)) a.shape = (3,1)
b = np.arange(3) b.shape = (3,)
根据规则1:
a.shape为(3,1)
b.shape为(1,3)
根据规则2:
a.shape为(3,3)
b.shape为(3,3)
示例3:
a = np.ones((3,2)) a.shape = (3,2)
b = np.arange(3) b.shape = (3,)
根据规则1:
a.shape为(3,2)
b.shape为(1,3)
根据规则2:
a.shape为(3,2)
b.shape为(3,3)
根据规则3:
将会引发异常。
实际应用:
1.数组的归一化
2.画一个二维函数