2015-06-02 85 views
1

定義如何在Numpy/Theano中表達c [i,j,k] = a [i,j] * b [i,k]?

c[i,j,k] = a[i,j] * b[i,k] for any i, j, k 

是相對於一個i元素之積,和一個外產物相對於jk。有沒有什麼方法可以在沒有循環的情況下在NumPy/Theano中表達這一點?

+1

您是否在尋找['numpy.einsum'](http://docs.scipy.org/doc/numpy/reference/生成/ numpy.einsum.html)? –

+0

@AshwiniChaudhary不 - 我甚至沒有總結任何東西! – MaxB

+1

@MaxB:你可以通過控制輸出標籤來告訴'einsum'不要沿軸求和。 'np.einsum('ij,ik-> ijk',a,b)'可以在NumPy中工作。 –

回答

3

我發現,既與NumPy和Theano有效的解決方案:

c = a[:, :, np.newaxis] * b[:, np.newaxis, :] 
+0

是的,就是這樣。並且適用於兩者。另一個與the numpy不兼容的「theano style」選項是使用'dimshuffle','c = a.dimshuffle(0,1,'x')* b.dimshuffle(0,'x',1)'。 – eickenberg

相關問題