当我在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)
我很难弄清楚这个广播中究竟发生了什么 .
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]])
1 回答
Numpy假设1维数组行向量,因此你的求和确实在形状(500,1)和(1,5000)之间,这导致矩阵求和 .
由于这不是很清楚,您应该明确扩展您的维度: