我想将两个数组乘以以下维度: A =(10,1),B =(1,1,10,18)使用einsum。
tmp = np.einsum('pi,klpy ->kliy', A, B)
我是否需要切换B阵列的尺寸才能获得正确的结果? 我的意思是:
tmp = np.einsum('pi,lkyp ->kliy', A, B)
答案 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)