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

时间:2018-10-06 13:43:49

标签: python python-2.7 numpy numpy-broadcasting

对于尺寸为(60,64,2,2)的4D数组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矩阵(即使不建议按照多个帖子),然后计算点积,但得到了另一个错误。

还研究了诸如广播之类的麻木主题,但我找不到4D阵列的任何有用示例。

任何输入将不胜感激。谢谢!

注意:我正在使用python 2.7

1 个答案:

答案 0 :(得分:0)

出于对知识的渴望,希望在末尾有一个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)