具有转置的 4D 数组的 Numpy 点积失败

Numpy dot product of a 4D array with its transpose fails

对于维度为 (60,64,2,2) 的 4 维数组 A,需要计算其转置的点积 A_t。

A_t 是维度 (2,2,64,60)。下面是我做的。

A_t = np.transpose(A)
A_At = A_t.dot(A)

点积抛出错误

ValueError: shapes (2,2,64,60) and (60,64,2,2) not aligned: 60 (dim 3) != 2 (dim 2)

我是不是转置不正确?我还尝试将单个数组转换为 numpy 矩阵(尽管根据几篇文章不推荐),然后计算点积,但我得到了一个不同的错误。

我也研究过诸如广播之类的 numpy 主题,但我找不到任何有用的 4D 数组示例。

如有任何意见,我们将不胜感激。谢谢!

注意:我使用的是 python 2.7

根据您的知识驱动希望在末尾有一个 2x2 数组,使用 xarray.dot 来完成此类任务怎么样?有你的A在手

>>> A.shape
(60, 64, 2, 2)

你会做

>>> xA   = xr.DataArray(A, dims=['d1','d2','d3','d4'])
>>> xA_t = xA.T
>>> xr.dot(xA_t, xA, dims=['d1','d2']).shape
(2, 2)