首页 文章

Numpy Broadcasting

提问于
浏览
0

当我在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 回答

  • 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]])
    

相关问题