广播法则(broadcasting):
广播法则是numpy要求输入的数组shape(维度)是一致的,若数组的shape不一致,则会使用广播机制,调整数组使得shape相等,满足规则,则可以运算。
广播法则_规则是:
- 所有数组向 shape 最长的数组看齐, 不足的在前方补 1
- 输出数组的shape是输入数组shape的各个轴上的最大值
- 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
- 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
如果对上面的Numpy中的shape属性不太理解,可以看下这句话:shape返回的是数组的行、列数。
例如,a.shape() 返回的是[2,3],表示a数组是2行3列的数组。a.shape[0] 表示返回数组a的行数。
当多维数组时,shape返回数组各个维度的数量。
下面举广播法则的例子:
下面小虾解释一下第二个例子:
a.shape 的返回值为(5,1),代表的是 a 有5行和1列 。而 b.shape 的返回值为(4,) 代表 b有1行和 4列(这样理解比较好理解点,如果还有更好的描述欢迎留言哦!)
如果实现 a+b这个操作,则需要根据广播法则同时在两个轴发生广播,a.shape的值变成(5,4),b.shape的值也变成(5,4).具体如下面的图:
如果对其还是不太理解,可以在看看这篇博客是怎么说的:https://blog.youkuaiyun.com/qq_39068872/article/details/90020891。也可以在搜索一下其他相关比较好的博客哦!
不后悔过去,不幻想未来,把握好现在,就是对自己最好的交代!!!!