2015-06-02 60 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

相关问题