Broadcasting 官方文档
参考文档
广播机制应用:
- numpy.array与scalar
将scalar扩充成array的形状后,进行操作


- 一般arrays间的广播机制
从最后边的维度开始匹配,当满足下面两个条件的任意一个时,两个数组间是兼容的:
- 维度相等
- 有一个的维度为1.
如果上述两个条件都无法满足,则会抛出ValueError: operands could not be broadcast together exception is thrown
- 下面的例子中,A和B阵列都具有长度为1的轴,该轴在广播操作期间扩展为更大的尺寸
结果是在每个维度上取较大的值


- 具体例子
二维数组与一维数组相加
(4,3) 与(3,)

import numpy as np
b = np.arange(6).reshape(2,1,3)
print('b','\n',b,'\n',b.shape)
c = np.arange(6,12).reshape(2,3)
d = b+c
print('c','\n',c,'\n',c.shape)
print('d=b+c','\n',d,'\n',d.shape)
b.shape [2,1,3]
c.shape [2,3]
从右边开始,看两个数组是否兼容,倒数第一位都是3,倒数第二位,b为1,扩充为c的2,最后结果d.shape = [2,2,3]
b的扩充过程[2,1,3] ——> [2,2,3]
b
[[[0 1 2]]
[[3 4 5]]]
扩充为
b'
[[[0 1 2]
[0 1 2]]
[[3 4 5]
[3 4 5]]]
c的扩充过程[2,3] ——> [2,2,3]
[[ 6 7 8]
[ 9 10 11]]
变为
[[[ 6 7 8]
[ 9 10 11]]
[[ 6 7 8]
[ 9 10 11]] ]
相加后的结果d
[[[ 6 8 10]
[ 9 11 13]]
[[ 9 11 13]
[12 14 16]]]
NumPy广播机制详解
本文详细介绍了NumPy中的广播机制,包括标量与数组、不同形状数组之间的运算规则,并通过具体示例展示了如何利用广播机制进行高效计算。
2万+

被折叠的 条评论
为什么被折叠?



