您的位置:首页 > 编程语言 > Python开发

Numpy——广播法则broadcasting

2018-03-20 23:42 483 查看

广播法则

广播法则是使通用函数有意义的处理不具有相同形状的输入,即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 = 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]])
根据广播原则:arr1的shape为(4,1),arr2的shape为(3,),所以会同时在两个轴发生广播,arr1的shape变成(4,3),而arr2的shape变成(4,3),所以结果也为(4,3)
参考链接
https://www.cnblogs.com/yangmang/p/7125458.html

http://blog.csdn.net/hongxingabc/article/details/53149655
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: