对于尺寸为(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
答案 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)