当我在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)
我很难弄清楚这个广播中究竟发生了什么。
答案 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]])