欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

5. NumPy使用(下)

程序员文章站 2022-03-15 21:08:13
...

1. 通用的broadcasting准则

broadcasting的前提是运算是通过element-wise的运算

  • 从尾部开始依次比较维度
  • 是否相等
  • 是否其中一个维度为1
  • 依次进行比较,如果相等则跳过,如果不相等并且其中一个为1则可以进行broadcasting

例子:

# 可以进行broadcasting的例子
#一个图片的大小为: 2*2
# 乘以一个scalar  1*1 结果为2*2
a = np.arange(2*2).reshape(2,2)
b = a * 2
print(a) # [[0, 2], [4, 6]]
a (2,3)
b (3)

#不可以进行broadcasting的例子
a (2,3)
b (3,4)
#那怎么进行broadcasting呢
a = np.arange(3).reshape(3, 1) # [[0], [1], [2]] shape = [3, 1]
b = np.ones(2)    # [1, 1] shape = (2)
a + b  
# 则 a broadcasting行,b broadcating列,如下
a --> shape = (3,2)  b ---> shape = (3, 2)
a = [[0, 0],[1, 1],[2, 2]]
b = [[1, 1],[1, 1],[1, 1]]
所以a + b等于
[[1 , 1], [2, 2], [3, 3 ]]