本文源码请见我的GitHub
规则
1.两个数组维度不同,将小维度的数组姓张将在最左边补1
2.数组在形状上在任意维度上都不匹配,则数组形状会沿着维度为1的维度扩展以匹配另外一个数组的形状。
3.如果两个数组在形状上任意维度都不匹配且没有等于1的维度则会发生异常。
1 | import numpy as np |
1 | M = np.ones((2, 3)) |
1 | print(M.shape) |
(2, 3)
(3,)
1 | M + a |
array([[1., 2., 3.],
[1., 2., 3.]])
1 | a = np.arange(3).reshape(3,1) |
1 | a +b |
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
广播的实际应用
1 | X = np.random.random((10, 3)) |
[0.61088259 0.32736058 0.38863271]
1 | from scipy import poly1d |
1 | p1 = poly1d([1,2,3,4]) |
3 2
1 x + 2 x + 3 x + 4