2013-03-25 30 views
1

我想添加一個矩陣的張量。如何在numpy中沿軸添加

這工作

numpy.zeros((4,4,4))+numpy.sum(numpy.ones((4,4,4)),axis=2) 

這是行不通的。

numpy.zeros((3,4,5))+numpy.sum(numpy.ones((3,4,5)),axis=2) 
ValueError: operands could not be broadcast together with shapes (3,4,5) (3,4) 

如何獲得第二個示例工作?我想沿第三軸添加。

回答

3

Broadcast

numpy.zeros((3,4,5))+numpy.sum(numpy.ones((3,4,5)),axis=2)[...,None] 
+0

如果我想沿軸= 1增加,那會是什麼? – siamii 2013-03-25 13:16:59

+1

'numpy.zeros((3,4,5))+ numpy.sum(numpy.ones((3,4,5)),axis = 1)[:,無,:]'。相當於我的原始答案是'numpy.zeros((3,4,5))+ numpy.sum(numpy.ones((3,4,5)),axis = 2)[:,:,, None]' – YXD 2013-03-25 13:20:48

+2

雖然更詳細,但可能更清楚地寫'np.newaxis'而不是'None'來添加軸('np.newaxis是None == True')。 – jorgeca 2013-03-25 14:41:03