Numpy——广播法则broadcasting

广播法则

广播法则是使通用函数有意义的处理不具有相同形状的输入,即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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值