使用einsum

时间:2017-02-27 22:45:28

标签: 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)

1 个答案:

答案 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)
相关问题