python为什么有广播机制_Numpy的广播机制

在Python中使用numpy进行数组运算时,会遇到形状相同和形状不同的情况

形状相同

形状相同的数组之间的运算就是在对应位做运算。

形状不同

在NumPy中如果遇到大小不一致的数组运算,就会触发广播机制。

广播

广播(broadcasting)指的是不同形状的数组之间的算术运算的执行方式。

广播原则

让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。

输出数组的形状是输入数组形状的各个维度上的最大值。

如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。

当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

通俗的理解就是:将两个数组的维度大小右对齐,然后比较对应维度上的数值,如果数值相等或其中有一个为1或者为空,则能进行广播运算,并且输出的维度大小为取数值大的数值。否则不能进行数组运算。

举例

数组a的大小为(4,3)

数组b的大小为(4,1)

右对齐:

4,3

4,1

--------

4,3

所以最后两个数组运算的输出大小为:(4,3),二维数组在1维上进行传播。

数组a的大小为(4,3)

数组b的大小为(1,3)

右对齐:

4,3

1,3

--------

4,3

所以最后两个数组运算的输出大小为:(4,3),二维数组在0维上进行传播。

数组a的大小为(3,4,2)

数组b的大小为(4,2)

右对齐:

3,4,2

4,2

----------

3,4,2

所以最后两个数组运算的输出大小为:(4,3),三维数组在0维上进行传播。

两个数组右对齐以后,对应维度里的数值要么相等,要么为1,要么缺失取大值。除此之外就会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值