2017-02-27 98 views
2

我想用以下维度乘以两个阵列: A =(10,1),B =(1,1,10,18)使用艾苏姆。矩阵乘法与使用真相法

tmp = np.einsum('pi,klpy ->kliy', A, B) 

我是否需要切换B阵列的尺寸才能获得正确的结果? 我的意思是:

tmp = np.einsum('pi,lkyp ->kliy', A, B) 
+0

非常确信第二甚至不会工作 –

+0

什么是正确的决定,真的。你的轴代表什么具体的东西?或者你可以写成一个你想实现的操作的循环? –

回答

1

你知不知道这两个结果有不同的形状? 如果是这样,你应该很可能知道你期望的形状。

import numpy as np 

A=np.arange(10).reshape(1,10) 
B=np.arange(180).reshape(1,1,10,18) 

np.einsum('pi,klpy ->kliy', A, B).shape 
np.einsum('pi,lkyp ->kliy', A, B).shape 

结果

np.einsum('pi,klpy ->kliy', A, B).shape 
Out: (1, 1, 10, 18)  
np.einsum('pi,lkyp ->kliy', A, B).shape 
Out: (1, 1, 10, 10)