Numpy中数组的广播机制/原则 剖析

广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。
当形状不相等的数组执行算术运算的时候,就会出现广播机制。

广播机制会对数组进行扩展,使数组的shape属性值一样,这样就可以进行矢量化运算了。

>>> arr1 = np.array([[0],[1],[2],[3]])
>>> arr2 = np.array([1,2,3])
>>> arr1+arr2
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])

上述代码中,数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使得数组arr1和arr2都变成4行3列。
广播机制

  • 广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。
  • 两个数组可以进行运算只需要满足如下任意一个条件即可
    1. 两个数组的每个维度等长;
    2. 其中一个数组的某一维度为1 。

*** 记忆图

二维数组(3, 4),实际上可以理解为(1, 3, 4)
一维数组(3, ),实际上可以理解为(1, 3)
一维数组(4, ),实际上可以理解为(1, 1, 4)

数组运算(2,)(3,)(4,)(2,3)(2,4)(3,4)(2,3,4)(2,3,1)
(2,)可以-------
(3,)-可以-可以----
(4,)--可以-可以可以-
(2,3)-可以-可以----
(2,4)----可以---
(3,4)--可以--可以可以-
(2,3,4)--可以--可以可以可以
(2,3,1)------可以可以

虎啸提示:"-"表示不可以

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值