Python 用einsum实现矩阵乘法

Python 用einsum实现矩阵乘法,python,numpy,Python,Numpy,我想将两个数组乘以以下维数: 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) 你知道这两个结果有不同的形状吗? 如果是这样的话,你应该知道你想要什么形状 import numpy as np A=np.arange(10).reshape(1,10

我想将两个数组乘以以下维数: 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)

你知道这两个结果有不同的形状吗? 如果是这样的话,你应该知道你想要什么形状

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)

我敢肯定第二种方法根本不管用什么是正确的取决于,真的。你的轴代表什么具体的东西吗?或者,您可以作为一个循环来编写希望实现的操作吗?