广播法则
广播法则是使通用函数有意义的处理不具有相同形状的输入,即numpy要求输入的数组shape是一致的,若数组的shape不一致,则会使用广播机制,调整数组使得shape相等,满足规则,则可以运算。
规则如下:
- 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
- 输出数组的shape是输入数组shape的各个轴上的最大值
- 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
- 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
>>> import numpy as np >>> a = np.array([1,2,3]) >>> b = np.array([1,2,3]) >>> print(a*b) [1 4 9] >>> #不想等时,则采用规则对齐 >>> a = np.array( [1,2,3]) >>> b = 2 >>> print(a * b) [2 4 6]
根据广播原则:arr1的shape为(4,1),arr2的shape为(3,),所以会同时在两个轴发生广播,arr1的shape变成(4,3),而arr2的shape变成(4,3),所以结果也为(4,3)>>> arr1 = np.arange( 0,4).reshape(4,1) >>> arr1 array([[0], [1], [2], [3]]) >>> arr2 = np.array([1,2,3]) >>> arr2 array([1, 2, 3]) >>> arr1+arr2 array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]])
参考链接
https://www.cnblogs.com/yangmang/p/7125458.html
http://blog.csdn.net/hongxingabc/article/details/53149655