具有转置的 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)
对于维度为 (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)