Numpy中数组的广播机制总结

Numpy中的数组算术运算遵循特定的广播规则,允许不同形状的数组进行运算。核心规则包括后缘维度相同、维度长度为1或缺失及输出形状取最大值。本文通过多个实例详细解析这些规则。

Numpy中的对于数组间的算术运算采用“元素一 一对应”的计算机制,因而一般要求两个数组的形状相同才能进行数组间的算术运算,但是在某些情况中,Numpy中允许符合一定规则的不同形状的数组进行算术运算。广播的核心规则如下:

  • 两数组的后缘维度轴长度相同(满足低维数组和高维数组的某一内层元素形状相同,低维数组才能被拓展成和高维数组一样的形状)
  • 两数组的后缘维度中有任意个长度是1或缺失
  • 输出数组的形状是输入数组形状的各个维度上的最大值

上面的规则可能看起来比较难懂,简单来说就是低维数组要想被拓展成和高维数组一样的形状,从后往前比较时两数组时,低维数组的所有维度要么等于高维数组的对应维度,要么该维度大小值为1或缺失,数组广播将会在维度为1或缺失的维度方向上进行。举例说明如下:

下面是一些广播的例子:

举例1:

In:

a = np.array([1,2,3,4])
b = 3
print(a*b)

Out:

[ 3  6  9 12]

标量和数组的乘积运算即是数组广播的最简单的一个例子,上诉过程中标量b被“虚拟”地扩展为数组[3,3,3,3]然后才和数组a[1,2,3,4]进行乘法运算,以满足Numpy中两数组间“元素一 一对应”的运算规则。

举例2:

In:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daimashiren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值