Numpy Broadcasting

时间:2017-02-17 17:45:03

标签: python numpy broadcasting numpy-broadcasting

当我在Numpy进行此操作时会发生什么?

a = np.ones([500,1])
b = np.ones([5000,])/2
c = a + b 

# a.shape (500,1)
# b.shape (5000, )
# c.shape (500, 5000)

我很难弄清楚这个广播中究竟发生了什么。

1 个答案:

答案 0 :(得分:1)

Numpy假设1维数组行向量,因此你的求和确实在形状(500,1)和(1,5000)之间,这导致矩阵求和。

由于这不是很清楚,您应该明确扩展您的尺寸:

>>> np.arange(5)[:, None] + np.arange(8)[None, :]
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 1,  2,  3,  4,  5,  6,  7,  8],
       [ 2,  3,  4,  5,  6,  7,  8,  9],
       [ 3,  4,  5,  6,  7,  8,  9, 10],
       [ 4,  5,  6,  7,  8,  9, 10, 11]])